记忆化dp

记忆化dp——————————小肥鼠吃奶酪

#include< iostream >
#include< memory.h >
#include< algorithm >
using namespace std;
int dp[105][105],mp[105][105],n,m;
int dfs(int x,int y){
    if(dp[x][y]!=-1)  return dp[x][y];
    dp[x][y]=mp[x][y];
    for(int i=max(x-m,0);i<n&&i<=x+m;i++){
        if(mp[i][y]>mp[x][y]){
            dp[x][y]=max(dp[x][y],mp[x][y]+dfs(i,y));
        }
    }
    for(int j=max(y-m,0);j<n&&j<=y+m;j++){
        if(mp[x][j]>mp[x][y]){
            dp[x][y]=max(dp[x][y],mp[x][y]+dfs(x,j));
        }
    }
    return dp[x][y];
} 
int main(){
    while(cin>>n>>m){
        if(n==-1&&m==-1) break;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                cin>>mp[i][j];
            }
        }
        memset(dp,-1,sizeof(dp));
        cout<<dfs(0,0)<<endl;
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
03-09 19:13
求你们别卷了的大学生...:你不骂他,我就要骂你了
今天你投了哪些公司?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务