本文共 814 字,大约阅读时间需要 2 分钟。
#include #include #include #include #include #include #include #include #include #include using namespace std;int dp[110][110],a[110][110],n,k;int fx[]={-1,0,0,1},fy[]={ 0,-1,1,0};int dfs(int x,int y){ if(!dp[x][y]) { int ans=0; for(int i=1;i<=k;i++) { for(int j=0;j<4;j++) { int xx=x+i*fx[j],yy=y+i*fy[j]; if(xx<0||xx>=n||yy<0||yy>=n) continue; if(a[xx][yy]>a[x][y]) ans=max(ans,dfs(xx,yy)); } } dp[x][y]=ans+a[x][y]; } return dp[x][y];}int main(){ //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&k)&&n!=-1) { memset(dp,0,sizeof(dp)); for(int i=0;i
转载于:https://www.cnblogs.com/d-e-v-i-l/p/5286870.html