一道用动态规划的数塔问题,编译错误是怎么回事?
题目描述:给出一个数塔(第i行有i个元素),每次只能从一个点走到正下方或右下方的点,求从顶点走到最后一行的最大和。#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int dp[105][105];
int max(int a,int b){
int m;
m=a;
if(b>m) m=b;
return m;
}
int main(void){
int C,N,i,j,N0;
scanf("%d",&C);
while(C--){
scanf("%d",&N);
N0=N;
memset(dp,0,sizeof(dp));
while(N--){
for(j=1;j<=N0-N;j++){
scanf("%d",&dp[N0-N][j]);
}
}
for(i=N0-1;i>=1;i--){
for(j=1;j<=i;j++){
dp[N0][j]=max(dp[N0][j],dp[N0][j+1])+dp[i][j];
}
}
printf("%d\n",dp[N0][1]);
}
return 0;
}
OJ上显示编译错误:
0_0_24930736_26938.c
0_0_24930736_26938.c(5) : error C2059: 语法错误:“类型”