标签:sam strong can each 最大权值 rip panel bsp namespace
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9499 Accepted Submission(s): 4007
//普通的搜索会超时,记忆化搜索,当搜到某点的权值和在前面的搜索中已经算过了就直接返回。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int inf=0x7fffffff; int f[103][103],mp[103][103]; int dir[4][2]={1,0,-1,0,0,1,0,-1}; int n,k; int dfs(int x,int y) { if(!f[x][y]){ int tmp=0; for(int j=1;j<=k;j++){ for(int i=0;i<4;i++){ int xx=x+dir[i][0]*j,yy=y+dir[i][1]*j; if(xx<0||xx>=n||yy<0||yy>=n) continue; if(mp[xx][yy]<=mp[x][y]) continue; tmp=max(tmp,dfs(xx,yy)); } } f[x][y]=tmp+mp[x][y]; } return f[x][y]; } int main() { while(scanf("%d%d",&n,&k)){ if(n==-1&&k==-1) break; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d",&mp[i][j]); } } memset(f,0,sizeof(f)); int ans=dfs(0,0); printf("%d\n",ans); } return 0; }
标签:sam strong can each 最大权值 rip panel bsp namespace
原文地址:http://www.cnblogs.com/--ZHIYUAN/p/6550445.html