题目描述:
输入 输出
样例数据1: 4 5 97 24
样例数据2: 40 50 1 47
搜索 !搜索!搜索!
重要的事情说三遍!
这题只要递归(循环也行,我懒得编了^_^),参数里再添一个累加器,边走边累加,走一步求最大,然后输出,这道题就做完了。
我从来不爱说废话,代码如下:
#includeusing namespace std; int n,m,s,f[105][105],lz; const int a[4][2]={{0,-1},{0,1},{1,0},{-1,0}}; //四个方向的xy轴增减变化(不是按上下左右排的!) void Dfs(int x,int y,int s){ //搜索 int x1,y1; lz=max(lz,s); //求最大 for(int i=0;i<4;i++){ //上下左右四个方向枚举 x1=x+a[i][0],y1=y+a[i][1]; if(f[x1][y1]>f[x][y]) Dfs(x1,y1,s+f[x1][y1]); //判断 } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>s; for(int i=1;i<=n;i++){ //初始化 for(int j=1;j<=m;j++){ s=s*345%19997; f[i][j]=s%10+1; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) Dfs(i,j,f[i][j]); } cout< 算法:DFS#



