2016-03-31 10 views
-2
int main() { 
const int n = 5; 
int A[n][n]; // value of each cell 
int V[n][n]; // total value of each cell 

for (int i = 0; i < n; i++) 
{ 
    for (int j = 0; j < n; j++) 
    { 
     V[i][j] = 0; // initialize total value of each cell equal to zero 
     A[i][j] = rand() % 10; // set each cell's value equal to some number 0-9 
     printf("%i ", A[i][j]); 
    } 
    printf("\n"); 
} 

for (int i = 0; i < n; i++) 
{ 
    for (int j = 0; j < n; j++) 
    { 
     if (i == 0 && j == 0) 
     { 
      V[i][j] = A[i][j]; 
     } 
     else if (i == 0) 
     { 
      V[i][j] = V[i][j - 1] + A[i][j]; 
     } 
     else if (j == 0) 
     { 
      V[i][j] = V[i - 1][j] + A[i][j]; 
     } 
     else 
     { 
      if (V[i][j - 1] > V[i - 1][j]) 
      { 
       V[i][j] = V[i][j - 1] + A[i][j]; 
      } 
      else 
      { 
       V[i][j] = V[i - 1][j] + A[i][j]; 
      } 
     } 
    } 
} 
printf("\n"); 
for (int i = 0; i < n; i++) 
{ 
    for (int j = 0; j < n; j++) 
    { 
     if (V[i][j] < 10) printf(" %i ", V[i][j]); 
     else printf("%i ", V[i][j]); 
    } 
    printf("\n"); 
} 

cin.get(); 

は}何か私はrand()%iについて誤解していますか? V [0] [2]を出力する理由

これは私が理解していない何http://i.imgur.com/Ak3KpPr.png

がある出力12時べき出力V [0] [1] + [0] [2]、または7 + 4である。

状況: ガレージセールでは、ある日、古い学校のビデオゲームに遭遇します。このビデオゲームでは、あなたの キャラクターは、n×nグリッドに沿って移動し、途中で報酬を集める必要があります。具体的には、 には、非負のエントリを持つn×n行列Aがあり、グリッドのセル(i、j)を訪問すると、あなたのキャラクタは Aijに等しい報酬を集めます。あなたの目的は、あなたのキャラクターによって集められた報酬の合計を最大化することです。 (a)[4点]。ゲームのレベル1のルールは以下の通りです。あなたのキャラクターは、グリッドの 左上隅、つまりセル(1,1)から始まり、右下隅の すなわちセル(n、n)にステップの順番で移動する必要があります。各ステップで、あなたのキャラクターは、グリッド内で右に1つまたは下に1つのセルを移動させることができます。上方向、左方向、斜め方向のどちらでもは許されません。 O(n )時間で最適な旅を計算する方法を示します。

+0

'V [0] [1] + A [0] [2]'実際には8 + 4です。 'A [0] [1] + A [0] [2]'は7 + 4になります。 – DimChtz

+1

ありがとうございます。私は遅れている。 – remiss

答えて

1

ここで、7+4について考えましたか?

あなたのコードには、明らかにV[0][2]V[0][1] + A[2][2]と表示されています。しかし、あなたのサイクルの以前の反復ではV[0][1]V[0][0] + A[0][1]に設定されました。そしてあなたのサイクルの以前の反復ではV[0][0]A[0][0]に設定されました。

したがって、V[0][0]1です。これはV[0][1] = 1 + 7 = 8となります。これはV[0][2] = 8 + 4 = 12となります。

すべてはあなたが実装したとおりです。

関連する問題