当前位置: 首页 > news >正文

洛谷——P1123 取数游戏

P1123 取数游戏

题目描述

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

输入输出格式

输入格式:

 

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

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:  复制
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

输出样例#1:  复制
271
172
99

说明

对于第1组数据,取数方式如下:

[67] 75 63 10

29 29 [92] 14

[21] 68 71 56

8 67 [91] 25

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

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

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

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

搜索·

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 20
using namespace std;
int n,m,t,ans,s[N][N],vis[N][N];
int xx[9]={0,0,0,1,1,1,-1,-1,-1};
int yy[9]={1,0,-1,1,0,-1,1,0,-1};
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return x*f;
}
void dfs(int x,int y,int sum)
{
    if(y>m)
    {
        x++;
        y=1;
    }
    if(x>n)
    {
        ans=max(ans,sum);
        return ;
    }
    if(vis[x][y]==0)
    {
        for(int k=0;k<=8;k++)
         vis[x+xx[k]][y+yy[k]]++;
          dfs(x,y+2,sum+s[x][y]);
          for(int k=0;k<=8;k++)
           vis[x+xx[k]][y+yy[k]]--;
    } 
    dfs(x,y+1,sum);
}
int main()
{
    t=read();
    while(t--)
    {
        n=read(),m=read();
        for(int i=1;i<=n;i++)
         for(int j=1;j<=m;j++)
          s[i][j]=read();
        memset(vis,0,sizeof(vis));
        ans=0;dfs(1,1,0);
        printf("%d\n",ans);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/z360/p/8017867.html

相关文章:

  • SpringMVC-@CookieValue
  • php get_called_class()函数与get_class函数的区别
  • OSChina 周三乱弹 ——逃离帝都,去杭州如何?
  • Class:Task 类
  • oracle创建定时任务
  • apache httpd的常见使用方法(1)
  • day7-mysql数据库应用管理进阶
  • javascript设计模式——中介者模式
  • java性能优化方案——使用entrySet()
  • 树梅派(Raspberry Pi 3b)安装kali linux 2.0
  • 创建公共CocoaPods
  • [APIO2012] 派遣 dispatching
  • PHP 7 修改了什么呢 -- 2
  • Visual stuido 项目路径的奇怪问题
  • 京东推荐系统中的机器学习与大规模线上实验
  • “大数据应用场景”之隔壁老王(连载四)
  • 77. Combinations
  • CentOS从零开始部署Nodejs项目
  • ComponentOne 2017 V2版本正式发布
  • Fundebug计费标准解释:事件数是如何定义的?
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript的使用你知道几种?(上)
  • rc-form之最单纯情况
  • SpringCloud集成分布式事务LCN (一)
  • SQLServer之索引简介
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 深度解析利用ES6进行Promise封装总结
  • 双管齐下,VMware的容器新战略
  • 算法之不定期更新(一)(2018-04-12)
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 学习JavaScript数据结构与算法 — 树
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 2017年360最后一道编程题
  • # 数据结构
  • (二)springcloud实战之config配置中心
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十一)图像的罗伯特梯度锐化
  • (一)appium-desktop定位元素原理
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)为C# Windows服务添加安装程序
  • *上位机的定义
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net 调用php,php 调用.net com组件 --
  • .Net6 Api Swagger配置
  • .Net接口调试与案例
  • .net流程开发平台的一些难点(1)
  • [20190113]四校联考
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [2023年]-hadoop面试真题(一)
  • [BZOJ] 2044: 三维导弹拦截
  • [C++参考]拷贝构造函数的参数必须是引用类型