答えっす | ゲームプログラマ志望が福岡で叫ぶ 『絶望』

ゲームプログラマ志望が福岡で叫ぶ 『絶望』

プログラマーになりたい!!!!! あ、風のうわさで聞いた最近若者で流行っているトゥイッターなるものを始めてみました (・ト・) @toshi_desu_yo

一昨日のアルゴリズムの回答です。



    【 つり銭の枚数を最小にするアルゴリズム  】






考え方としては、



==============================================


   コインの枚数を数える配列を つり銭の金額 + 1 のサイズで作る。  

   そして、その配列を、添字と同じ数で初期化する。  ↓


   ( これは 1セントだけの場合の答えと同じ )

              ゲームプログラマ志望が二日市で叫ぶ 『はい、勉強中です。』



  これに、 10セント を加えた場合、


    添字 10 から開始して、 42( お釣り ) になるまで、


    枚数[ 10  -  10 ] の値 + 1 を配列に入れていく。

         ↑     ↑

   開始する添字    10セント


    
         ゲームプログラマ志望が二日市で叫ぶ 『はい、勉強中です。』



   この時、 もともと配列に入っている値( コインの枚数 )より 

   

   新しく求めた値の方が小さい時だけ、値を更新する


    


   これを コインの種類分、ループを回す。





   全ての処理が終わったときの 枚数[ 42( お釣り ) ] の所にある値が、


   最小のつり銭の枚数。




==============================================





これが 大体の考え方。



↑の答えは、コインの種類を配列にしているおかげで、

     コードも短くなり、単純化している。

     ( 今回は 1セント、 10セント、 25セント なので   

       int size[] = { 1, 10, 25 };  という形にする。 )







あと、どのコインをどれだけ使ったか? を表示するために、


もう一つ、表示用の配列を使って値をいれていっている。






----------------------------------------------------------------------




なんなんすかね・・・・



 アルゴリズム。

    難しぃぃぃいい・・・ (´Д`)




俺はこのコードの2倍近く書いていたので、


『 まだまだだなぁww 』 とおもいましたねー。。





こういうアルゴリズムの解き方としては



      < 分割統治法 >  と  < 動的計画法 >


      というのがあるらしいです。


     



いわゆる トップダウン、 ボトムアップってことらしいですが、 



どっちがいいのか俺にはまだよくわかりませんww








頭痛い・・・(´Д`)