2016-03-31 12 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 hakkında yanlış anlamadığım bir şey()% i? V [0] [2] verir neden

Bu anlamıyorum ne http://i.imgur.com/Ak3KpPr.png

çıkışlarının 12 zaman gerektiği çıkışı V [0] [1] + A [0] [2] veya 7 + 4.

Bağlam: Bir garaj satışında bir gün, eski bir okul video oyununa rastlıyorsunuz. Bu video oyununda, karakteriniz, n × n ızgara boyunca bir yolculuğa çıkmalı, bu arada ödüller toplanmalıdır. Spesifik olarak, , n × n matris A, negatif olmayan girişlerle birlikte, ve karakteriniz, şebekenin hücresini (i, j) ziyaret ederse, Aij'e eşit bir ödül toplar. Amacınız, karakterinizle toplanan ödüllerinin toplamını maksimize etmektir. (a) [4 puan]. Oyunun birinci seviye kuralları aşağıdaki gibidir. Karakteriniz, sol üst köşesinde, yani hücrenin (1, 1) - başlar ve adımların sırasına göre sağ alt köşeye - yani (n, n)) gitmelidir. Her adımda, karakterinizin ya bir hücresini sağa ya da ızgaradaki bir hücreye taşımasına izin verilir; yukarı, sola veya çapraz olarak adım atmak 'a izinli değildir. O (n) zamanındaki en uygun yolculuğu nasıl hesaplayacağınızı gösterin.

+0

'V [0] [1] + A [0] [2]' aslında 8 + 4'tür. Yani, 12 doğru. A [0] [1] + A [0] [2] '7 + 4 olur. – DimChtz

+1

Teşekkür ederim. Geciktim. – remiss

cevap

1

7+4 hakkındaki fikri nereden buldunuz? Kodunuz açıkça V[0][2]'un V[0][1] + A[2][2] olduğunu bildiriyor. Ancak, döngünüzün önceki yinelemesinde V[0][1], V[0][0] + A[0][1] olarak ayarlanmıştır. Ve döngüsünüzün önceki yinelemesinde V[0][0], A[0][0] olarak ayarlanmıştır.

V[0][0]1'dir. Hangi V[0][1] = 1 + 7 = 8 yapar. Hangi V[0][2] = 8 + 4 = 12 yapar.

Her şey sizin uyguladığınız gibi.

İlgili konular