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 )時間で最適な旅を計算する方法を示します。
'V [0] [1] + A [0] [2]'実際には8 + 4です。 'A [0] [1] + A [0] [2]'は7 + 4になります。 – DimChtz
ありがとうございます。私は遅れている。 – remiss