使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.Linqのを。 使用してSystem.Textのを。 使用してSystem.Threading.Tasksを。 名前空間コイン { クラスプログラム { 静的 ボイドメイン(文字列[]引数) { int型 []の値= 新しい INT [] { 1、2、5、10、20、50、100 }。 INT [] =カウント新しい int型[] { 3、0、2、1、0、3、5 }; int型 [] =結果新しい新しい INT [count.Lengthの+を1 ]; //は各額面金額を使用する記録され、最後のレコードの変更ケース CoinMoneny(600、値、COUNT、結果); // 600個のブロック変化 のforeach(VARの項目で結果)// 場合場所による出力変化 { Console.WriteLineを(項目); } Console.ReadKey() ; } /// <要約> /// 对货币进行找零 /// </要約> /// <PARAM NAME = "お金"> </ PARAM> /// <PARAM名= "値"> </ param>の /// <PARAM NAME = "回数"> </ param>の /// <PARAM NAME = "結果"> </ param>の 公共の 静的な 無効 CoinMoneny(int型、お金、int型 []の値を、int型 []カウント、INT []結果) { 場合(お金<= 0)// 最初により変更する必要があるかどうかを決定 { リターン; } int型 TEMP = value.Length - 1。 // の変更のための最大宗派で始まり ながら、(真の) { IF(マネー>値[TEMP] * COUNT [TEMP])// 変化の最大数は、金種の合計数よりも少ない { [TEMP]を結果 = COUNT [TEMP]; // 配列に全ての金種のすべての記録された最大数 マネー-値= [TEMP] * COUNT [TEMP]; // 使用後の金種の硬貨の最大数を見つける } 他// 最大金種が合計数よりも大きいです変更番号 { [TEMP]結果 [TEMP]マネー/値=; // 実際の記録の変化量に応じて お金- = [TEMP] *結果値[TEMP]を。// 残数変化による } TEMP = TEMP - 1。 ; // 硬貨の金種に検出 IF(TEMP < 0 ||マネー<= 0)// 終了検索 { BREAK ; } } } } }