hdu1078

来源:互联网 发布:js包装函数 编辑:程序博客网 时间:2024/05/22 09:48
此题走k步要求的是直走
#include<stdio.h>#include<iostream>using namespace std;int dp[110][110];int map[110][110];int mov[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int k;int n;int dfs(int x,int y){int _max=0;if(dp[x][y]+1) return dp[x][y];for(int i=1;i<=k;i++){for(int j=0;j<4;j++){int xx=x+mov[j][0]*i;int yy=y+mov[j][1]*i;if(xx<0||xx>=n||yy<0||yy>=n)continue;if(map[xx][yy]>map[x][y]){int temp;_max=_max>(temp=dfs(xx,yy))?_max:temp;}}}return dp[x][y]=map[x][y]+_max;}int main(){freopen("in1.txt","r",stdin);int i,j;while(1){cin>>n>>k;if(n==-1&&k==-1)break;for(i=0;i<n;i++){for(j=0;j<n;j++){cin>>map[i][j];dp[i][j]=-1;}}cout<<dfs(0,0)<<endl;}return 0;} 

0 0