#include <stdio.h>
#define max2(a,b) (a>b)?a:b
#define max3(a,b,c) max2(max2(a,b),c)
int maxArray(int a[], int n)
{
int i;
int max=0;
for (i=1;i<=n;i++)
max=max2(max,a[i]);
return max;
}
void input(int a[][100],int &m, int &n)
{
int i,j;
printf("Hay nhap so tang: ");
scanf("%i",&m);
printf("Hay nhap so phong moi tang: ");
scanf("%i",&n);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
scanf("%i",&a[i][j]);
}
int findRoad(int L[][100], int a[][100], int m, int n)
{
int i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
L[i][j]=a[i][j]+max3(L[i-1][j-1],L[i-1][j],L[i-1][j+1]);
return maxArray(L[m],n);
}
int main()
{
int m,n;
int L[100][100]={0};
int a[100][100]={0};
input(a,m,n);
int s=findRoad(L,a,m,n);
printf("Gia tri lon nhat la: %i",s);
getchar();
getchar();
return 0;
}
hàm input vẫn bình thường, vào hàm main mảng a vẫn còn, sau khi nhảy vào hàm findRoad thì bị clear hết
Mình thử mang ra hàm main thì thằng L cũng không thay đổi giá trị.
mình kiếm ra lỗi rồi nhưng không biết vì sao mọi người giải thích giùm mình luôn nhé
sai ở #define max3
nếu viết một hàm int max3
thì chương trình chạy đúng kết quả
int max3so(int a, int b, int c)
{
return max2(max2(a,b),c);
}
@ltd @thanhmssl10 @david15894