以下のコードでK以上の最小値を求めたいのですが、K=17とすると, a=9, b=9, min_value=18が返ります。正しくは、K=17とすると, a=9, b=8, min_value=17(もしくはa,b逆)になると思うのですが、どうも、aとbが等しくない時は回っていないような気がします。どう改善したらいいでしょうか?
'use strict' const INF = 2000000;//十分大きな値に設定 const K = 17; var a = new Array(100); //new Array(要素)で新しい配列が作れる var b = new Array(100); //new Array(要素)で新しい配列が作れる for (let i = 0; i < a.length; i++){ a[i] = i; } for (let i = 0; i < b.length; i++){ b[i] = i; } let amin = 0; let bmin = 0; //線型検索 let min_value = INF; //let exist = false; for(let i = 0; i < 100; i++){ for(let j = 0; j < 100; j++){ //和がk未満は捨てる if(a[j] + b[j] < K) { continue; } //最小値を更新 if(a[j] + b[j] < min_value) { min_value = a[j] + b[j]; amin = a[j]; bmin = b[j]; break; } } } //出力 console.log(`最小値は${min_value}`); console.log(`その時のaは${amin}`); console.log(`その時のbは${bmin}`);
回答1件
あなたの回答
tips
プレビュー