方格取数

Problem Detail - 【提高】方格取数 - 追梦算法网

复制代码
#include<iostream>
using namespace std;
int n,m,s;
const int N=5050;
int g[N][N];
int res;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y,int sum)
{
    res=max(res,sum);
    for(int i=0;i<4;i++)
    {
        int xx=x+dx[i];
        int yy=y+dy[i];
        if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&g[xx][yy]>g[x][y])
            dfs(xx,yy,sum+g[xx][yy]);
    }
}
int main(){
    cin>>n>>m>>s;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            s=(s*345)%19997;
            g[i][j]=s%10+1;
        }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            dfs(i,j,g[i][j]);
    cout<<res;
    return 0;
}
/*
dfs的特点就是有回溯和递归性,这个题充分利用了这个特点,即使加过之后不符合可以返回,值也可以返回倒原来的状态可以重新再加 

*/
复制代码

 

posted @   小志61314  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示