取数游戏
发布日期:2021-05-07 07:23:49 浏览次数:22 分类:精选文章

本文共 869 字,大约阅读时间需要 2 分钟。

luogu链接:

只要注意点不是只被标记一次就好了,同一个点有可能被标记多次,但是只有标记全都被清除的时候这个点才能被选中~

#include
#include
#include
#include
using namespace std;int w,n,m;int maxx = 0;int map[1010][1010];int st[1010][1010];int go[8][2] = { {1,1},{1,-1},{-1,1},{-1,-1},{1,0},{0,1},{-1,0},{0,-1}};void dfs(int x,int y,int sum){ if(y==m+1) //注意是一定超出范围 { dfs(x+1,1,sum); return; } if(x==n+1) //注意一定是超出范围的 { maxx = max(maxx,sum); return; } dfs(x,y+1,sum); if(!st[x][y]) { for(int i=0;i<8;i++) st[x+go[i][0]][y+go[i][1]]++; dfs(x,y+1,sum+map[x][y]); for(int i=0;i<8;i++) st[x+go[i][0]][y+go[i][1]]--; }}int main(){ cin>>w; while(w--) { cin>>n>>m; maxx = 0; memset(map,0,sizeof map); memset(st,0,sizeof st); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>map[i][j]; dfs(1,1,0); //从头开始搜,看能不能搜出最优结果 cout<
<

 

上一篇:Apache安装与配置
下一篇:PHP基础学习

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月23日 22时23分42秒