NYOJ skiing

来源:互联网 发布:苹果越狱软件 mac版 编辑:程序博客网 时间:2024/05/07 17:02

点击打开链接

由题意可知,需要找出最长的线路,所以要从每个点出发,搜索所有满足条件的线路,即深搜

代码如下:

#include<iostream>#include<cstdlib>#include<cstring>#define MAX 105using namespace std;int map[MAX][MAX];int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};int Max,r,c;//Max用于存储最长的路线void dfs(int x,int y,int count){int x_1,y_1;if(count>Max)Max=count;for(int i=0;i<4;i++){x_1=x+dir[i][0];y_1=y+dir[i][1];if(x_1>0 && y_1>0 && x_1<=r &&y_1<=c && map[x_1][y_1]< map[x][y] && map[x_1][y_1]!=-1)//能继续深搜的条件dfs(x_1,y_1,count+1);}}int main(){int n,result;cin>>n;while(n--){memset(map,-1,sizeof(map));cin>>r>>c;result=0;for(int i=1;i<=r;i++)for(int j=1;j<=c;j++)cin>>map[i][j];for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){//依次查找满足条件的路线Max=0;dfs(i,j,1);if(Max>result)result=Max;}cout<<result<<endl;}system("pause");return 0;}

原创粉丝点击