为什么
#define max(a,b) a>b?a:b
会出错。(运行结果是31)
#define max(a,b) (a>b?a:b)
不会。(运行结果是34)
我的完整AC代码如下
#include<stdio.h>
#define max(a,b) (a>b?a:b)
int main()
{
int m,n,dp[51][51][51][51]={0},map[51][51]={0},i,j,t,k;
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&map[i][j]);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
for(t=1;t<=m;t++)
for(k=1;k<=n;k++)
{
dp[i][j][t][k]=max(max(dp[i-1][j][t-1][k],dp[i-1][j][t][k-1]),max(dp[i][j-1][t-1][k],dp[i][j-1][t][k-1]));
if(i==t&&j==k)
dp[i][j][t][k]+=map[i][j];
else
dp[i][j][t][k]+=map[i][j]+map[t][k];
}
printf("%d",dp[m][n][m][n]);
return 0;
}
还有一个小问题,这个代码在codeblocks和devc上还没运行就结束了。