1、num()设置成了无返回值函数,但是你在实际应用的时候当成有返回值函数在用。
2、max函数名字要变一下,这个不给用
3、b[x][y-1]==1? 这算什么意思?是不是改成if(b[x][y-1]==1)
4、num(x,y-1):(b[x][y])这是什么意思?冒号运算符?看不懂!
#include<stdio.h>//滑雪、、搜索+动态规划#define max(a,b) a>b?a:b
int m,n
int map[105][105]
int step[105][105]//动态规划出最大的step-length
bool hash[105][105]//标记是否被走过
int dir[4][2]={-1,0,1,0,0,1,0,-1}//四个方向
int bfs(int x,int y)//写错了,这是深搜得代码。不是广搜
{
int count=0,i
if(step[x][y]!=1)return step[x][y]//返回已经确定的最优step
for(i=0i<4i++)
{
int a=x+dir[i][0]
int b=y+dir[i][1]
if(a>=0&&a<m&&b>=0&&b<n&&map[a][b]>map[x][y])//判断该点是否可以走
count=max(count,bfs(a,b))//递归调用向四个方向寻找
}
step[x][y]=count+step[x][y]//统计step
return step[x][y]//返回step
}
int main()
{
int i,j
while(scanf("%d %d",&m,&n)!=EOF)
{
int ans=0
for(i=0i<mi++)
{
for(j=0j<nj++)
{
scanf("%d",&map[i][j])
hash[i][j]=false//初始化设置为都没有走过
step[i][j]=1//初始化
}
}
for(i=0i<mi++)
{
for(j=0j<nj++)
{
ans=max(ans,bfs(i,j))//枚举---以所有的点为起点,并搜索寻找最优解
}
}
printf("%d\n",ans)
}
return 0
}