[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/14 16:58 / Filesize : 239 KB / Number-of Response : 609
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★★ Java の宿題ここで答えます Part 66 ★★



566 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 23:39:33 ]
>>564
時間かかるからやめとけw
それよりも計算量を減らしたり無駄にループを回さないように工夫をしたほうがいい
for (int a = 0; a <= n; a += 1) {
for (int b = 0; b <= n; b += 5) {
for (int c = 0; c <= n; c += 10) {
for (int d = 0; d <= n; d +=20) {
if (a + b + c + d == n) count++;
これだけでも違うし最深のループで和がnに等しくなったらそれ以上ループするのは無意味だから
if (a + b + c + d == n) {
count++;
break;
各ループでも同様にそれまでの和(a, a+b, a+b+c)がnを超えるようならそれ以上やらなくてもいいから
for (int a = 0; a <= n; a += 1) {
for (int b = a; b <= n; b += 5) {
for (int c = b; c <= n; c += 10) {
for (int d = c; d <= n; d += 20) {
if (d == n) {
count++;
break;
みたいにできる(この場合のb,c,dはそのレベルのループまでの和であって各硬貨ごとの和を表していない)
この場合の最後のbreakは加算と比較をそれぞれ1回分減らすだけだがループ回数が多いので少し速くなる
たったこれだけの工夫でも少しはマシになる
それといきなり10倍なんて試さずに2倍づつとか1000刻みとかで計算時間の予測をつけておいた方が精神衛生上いいと思うが
それより気になるのは20円硬貨の存在かもしれんw






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<239KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef