宿題をしようとしています。次に移動する人が勝ち負けの状態にあるかどうかを表示するには、動的計画法を使用する必要があります。私は実際の問題について助けを必要としません、私はそれが私を困惑させている範囲外の例外のインデックスについて助けを必要としています。forループだけを調べる必要があるため、ここにコードの一部を貼り付けるだけです。また、クラスの誰もが私のすべてのコードを見てコピーすることを望んでいません。さらにデータが必要な場合はお知らせください。だからここにコードがあります:
if(primeArray[x] == true){
for(int i = 1; i <= x; i++){
if(primeArray[i]== true){
newRowNumber = x - i;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
}
//COMPOSITE CASE FOR X!
else{
for(int k = 1; k <= x; k++){
if((primeArray[k] == false)){
newRowNumber = x - k;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
何らかの理由でif(primeArray[i] == true
正しく実行されますが、でインデックスの範囲外の例外が発生しif(primeArray[k] == false
ます。これら2つの違いは、forループで変数k over iを使用していることだけです(forループは同じです)。コード内の他の場所ではどちらの変数も使用していません。なぜこれが一方に発生するのか、もう一方には発生しないのかわかりません。どちらの場合も、xは同じ数のままです。
また、最初のエラーが発生していなくても、2番目のインデックスの範囲外例外がminimum = dynaProgram[newRowNumber][columnNumber]
発生しています。おそらくばかげたエラーだとは思いますが、理解できません。'k' forループをk < x
範囲外のインデックスに変更すると、if(primeArray[k] == false
行の例外はなくなりますが、正しくありません。(ただし、2番目のエラーは解消さminimum = dynaProgram[newRowNumber][columnNumber]
れません。)
このコードはすべて、ネストされたforループ内にあり、テーブル内の行と列を繰り返して入力します。上記のコードを削除してそのまま置くdynaProgram[rowNumber][columnNumber] = 1
と、問題は発生しないので、それが問題。