P1123 取数游戏

题目描述
一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。

输入格式
第1行有一个正整数T,表示了有T组数据。

对于每一组数据,第一行有两个正整数N和M,表示了数字矩阵为N行M列。

接下来N行,每行M个非负整数,描述了这个数字矩阵。

输出格式
T行,每行一个非负整数,输出所求得的答案。

输入输出样例
输入
3
4 4
67 75 63 10
29 29 92 14
21 68 71 56
8 67 91 25
2 3
87 70 85
10 3 17
3 3
1 1 1
1 99 1
1 1 1

输出
271
172
99

说明/提示
对于第1组数据,取数方式如下:

[67] 75 63 10

29 29 [92] 14

[21] 68 71 56

8 67 [91] 25

对于20%20%的数据,N, M≤3N,M≤3;

对于40%40%的数据,N,M≤4N,M≤4;

对于60%60%的数据,N, M≤5N,M≤5;

对于100%100%的数据,N, M≤6,T≤20N,M≤6,T≤20。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t,n,m;
int a[20][20]; //输入矩阵
int v[20][20];//判断某个点是否被走过,这里不能用bool,可能会出现多重状态
int dx[]={1,1,1,0,0,-1,-1,-1};
int dy[]={1,0,-1,1,-1,1,0,-1};
int maxans=0;
void dfs(int x,int y,int ans){if(y==m+1){//到了一行的尽头,让行++,列=1x++;y=1;}if(x==n+1){//搜完了maxans=max(maxans,ans);return ;}dfs(x,y+1,ans);//不选当前点(x,y)if(!v[x][y]){//选当前点(x,y)v[x][y]++;//标记点(x,y)for(int k=0;k<8;k++){//标记周围的点int tx=x+dx[k],ty=y+dy[k];v[tx][ty]++;}dfs(x,y+1,ans+a[x][y]);//搜索下一个点//回溯for(int k=0;k<8;k++){int tx=x+dx[k],ty=y+dy[k];v[tx][ty]--;}v[x][y]--;}
}
int main(){cin>>t;while(t--){cin>>n>>m;maxans=0;//每一次都重置最大值for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}dfs(1,1,0);//从点(1,1)开始搜cout<<maxans<<endl;}return 0;
}

P1123 取数游戏相关推荐

  1. 搜索练习2(P1123取数游戏)

    闲聊一下: 搜索练习只有口胡和总结,不喜欢可以看完别的文章,由于本菜菜发高烧,只好一篇一篇的更新,欢迎之后来看我的搜索练习. P1123 取数游戏 - 洛谷 题意: 找出矩阵数字和最大的,保证在该数八 ...

  2. 洛谷----P1123 取数游戏

    题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少. ...

  3. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

  4. [CH Round #61] 取数游戏

    描述 SJY和CYF在玩一个取数游戏.他们将1~n分别写在n张纸上,随机排成一排,约定SJY先取,只能取走最边上的两张纸之一,然后CYF取:以此循环下去,取到1的人获胜.假设SJY和CYF足够聪明,求 ...

  5. P1005 矩阵取数游戏(__int128模板/简单dp)

    转跳P1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}a i,j ​ 均为非负整数.游戏规则如下: 每次取数时 ...

  6. 【每日一题】7月10日精讲—矩阵取数游戏

    来源:牛客网: 文章目录 题目描述 题解: 代码: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld ...

  7. 【洛谷P1288】取数游戏II

    取数游戏II 题目链接 显然,由于一定有一个0,我们可以求出从初始点到0的链的长度 若有一条链长为奇数,则先手可以每次取完一条边上所有的数, 后手只能取另一条边的数,先手必胜: 反之若没有奇数链,后手 ...

  8. 洛谷1005 【NOIP2007】矩阵取数游戏

    问题描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  9. 【codevs1166】【noip07TG】矩阵取数游戏,新的开始

    1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [问题描述] 帅帅经 ...

最新文章

  1. Spring ORM数据訪问——Hibernate
  2. 项目托管到Github
  3. 从oracle10g 10.2.0.1 升级到10.2.0.4碰到的问题及解决
  4. overleaf服务端_部署私有在线Latex编辑器:Overleaf/sharelatex,写毕设神器
  5. jdbc excute方法理解的误区
  6. centos路由查看命令_CentOS下使用Route命令添加路由
  7. redis数据库及与python交互
  8. js日期操作,某天的N天后,一个月后的日期
  9. Linux内核中的proc文件系统
  10. Qt与MySQL通信错误及解决方法
  11. c语言编写打字母游戏代码,求一个用C语言编写的小游戏代码
  12. kubernetes12(kubernetes的储存)
  13. [MATLAB]图像处理——交通标志的识别
  14. onenote2019导入_将OneNote 2007笔记本导入Evernote
  15. 打造万能视频播放器——Vitamio
  16. Windows 10 的快捷关机方式
  17. Boxplot(箱形图或盒图)的介绍和使用
  18. 【07月19日】指数估值排名
  19. ROS学习笔记4_订阅者Subscriber
  20. Java使用poi将list<Map>导出为表格

热门文章

  1. android平台接入服务器总结(二)腾讯qq应用宝接入
  2. 768. 忽略大小写比较字符串大小(DAY19)
  3. GIS算法基础实验1高斯克吕格的正反算
  4. android 禁止屏幕黑屏,Android 禁止锁屏或黑屏
  5. Vue打包后浏览器不出来
  6. android的充电图标显示
  7. 喜欢玩游戏的发烧友不要错过了,五款高续航低延迟蓝牙耳机为你量身打造
  8. php 带建数组转字符串,php数组转换为字符串的两种方法详解【附视频】
  9. Who Am I ?
  10. 【历史上的今天】1 月 4 日:Linux 2.4 内核发布;创世区块诞生;苹果开放 Macintosh 系统授权