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

P1123 取数游戏(dfs算法)

题目描述

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

输入格式

第一行有一个正整数 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

数据范围及约定

  • 对于20%20%的数据,1≤N,M≤3;
  • 对于40%40%的数据,1≤N,M≤4;
  • 对于60%60%的数据,1≤N,M≤5;
  • 对于100%100%的数据,1≤N,M≤6,1≤T≤20。

思路 : 

此题为n皇后问题的简单版,算法为dfs,只要枚举每行每列元素就可,分两种情况,取这个元素和不能取这个元素,题目中所说的,相邻的八个格子元素不能取是这个意思如图

×的八个方向不能取。接下来我们看代码


AC代码: 

#include<iostream>
#include<cmath>
#include<cstring>using namespace std;int dx[8] = {-1,-1,-1,0,0,1,1,1},dy[8] = {-1,0,1,-1,1,-1,0,1};
const int N = 10;
int g[N][N];//数字数组 
int st[N][N];//标记数组 
int mx,ans,n,m;void dfs(int x,int y)
{//如果搜到该行的最后一列就换下一行第一列 if(y == m + 1){x++,y=1;}//所有行列搜完了 进行输出 if(x == n + 1){mx = max(ans,mx);return; }//不放 dfs(x,y+1);//放if(!st[x][y]){ans += g[x][y];for(int i=0;i<8;i++){st[x+dx[i]][y+dy[i]]++;}dfs(x,y+1);for(int i=0;i<8;i++){st[x+dx[i]][y+dy[i]]--;}ans -= g[x][y];} 
}int main()
{cin.tie(0)->ios::sync_with_stdio(false);//快读 int t;cin >> t;while(t --){//注意:每次使用完记得清0 memset(g,0,sizeof(g));memset(st,0,sizeof(st));cin >> n >> m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin >> g[i][j];}}mx = 0;//每次搜完需要变成0,方便下次使用不会错 dfs(1,1);//从第一个行第一列第一个元素开始搜索 cout << mx << endl;}return 0;
}

注意:此题我们不能使用bool类型去进行标记,我们可以用一个int类型的变量来记录,当这个数被访问时,该变量自增,当回溯时,该变量自减==>所以当该变量为零时,该数未被访问。(至于这个我们可以手动模拟一下就能有结果)

相关文章:

P1123 取数游戏(dfs算法)

题目描述 一个 NM 的由非负整数构成的数字矩阵&#xff0c;你需要在其中取出若干个数字&#xff0c;使得取出的任意两个数字不相邻&#xff08;若一个数字在另外一个数字相邻 8个格子中的一个即认为这两个数字相邻&#xff09;&#xff0c;求取出数字和最大是多少。 输入格式 第…...

交叉验证(Cross-Validation)

交叉验证的基本概念 交叉验证通常用于评估机器学习模型在未知数据上的性能。它将数据集分成k个不同的子集&#xff0c;然后进行k次训练和验证。在每次迭代中&#xff0c;选择一个子集作为测试集&#xff0c;其余的子集作为训练集。这样&#xff0c;每个子集都用作过测试集&…...

【kears】(01)keras使用介绍

文章目录 一.特点二.keras如何支持TensorFlow、CNTK 和 Theano2.1 使用 TensorFlow 后端引擎训练和评估模型2.2 使用 TensorFlow 后端引擎训练和评估模型2.3 使用 Theano后端引擎训练和评估模型2.4 不同深度学习框架如何选择1.1 keras.datasets&#xff1a;包含多种常用数据集1…...

2. TypeScript 安装与环境配置指南

TypeScript 是 JavaScript 的一个超集&#xff0c;它为 JavaScript 增加了类型系统和对 ES6 的支持。TypeScript 不仅能够帮助开发者捕获代码中的错误&#xff0c;还能提供更好的编辑器支持&#xff0c;包括代码补全、接口提示等。本文将详细介绍如何在您的开发环境中安装和配置…...

python pygame库的略学

文章目录 概述1. pygame的初始化和退出2. 创建游戏窗口&#xff08;1&#xff09;set_mode()&#xff08;2&#xff09;set_capyion()&#xff08;3&#xff09;update() 3. 游戏循坏与游戏时钟4. 图形和文本绘制&#xff08;1&#xff09;图形绘制&#xff08;2&#xff09;文…...

大模型日报2024-04-09

大模型日报 2024-04-09 大模型资讯 苹果预告超越ChatGPT的新AI模型ReaLM 摘要: 苹果公司最新宣布&#xff0c;即将推出一款名为ReaLM的人工智能模型。这款AI技术在理解复杂屏幕用户指令方面表现出高超的能力&#xff0c;并能与用户进行自然流畅的对话。ReaLM的推出预示着苹果在…...

抖音视频如何下载保存(方法分享)

有时刷抖音视频&#xff0c;看的喜欢的视频想要下载到本地&#xff0c;但是有很多视频无法下载或者下载下来是有水印的&#xff0c;那怎么办呢?   抖音视频下载有两种情况&#xff1a; 一种是可以直接点击分享下载&#xff0c;然后可以直接点击保存到相册。 视频就自动下载…...

MySQL-用户与权限管理:用户管理、权限管理、角色管理

用户与权限管理 用户与权限管理1.用户管理1.1 登录MySQL服务器1.2 创建用户1.3 修改用户1.4 删除用户1.5 设置当前用户密码1.6 修改其它用户密码 2. 权限管理2.1 权限列表2.2 授予权限的原则2.3 授予权限2.4 查看权限2.5 收回权限 访问控制连接核实阶段请求核实阶段 3. 角色管理…...

Vue.js中如何使用Vue Router处理浏览器返回键的功能

在Vue.js中&#xff0c;Vue Router默认提供了处理浏览器返回键的功能。当用户点击浏览器的返回键时&#xff0c;Vue Router会自动导航到历史记录中的上一个路由。然而&#xff0c;如果你想自定义返回键的行为或者在特定的页面上进行特殊处理&#xff0c;你可以使用Vue Router的…...

QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时&#xff0c;如果图片存在缩放时&#xff0c;会出现模糊现象&#xff0c;例如将一个100x100 的图片显示到30x30的区域&#xff0c;这个时候就会出现模糊。如下&#xff1a; 实际图片&#xff1a; 这个问题就是大图显示成小图造成的像素失真。 当…...

YOLOv9改进策略 :小目标 | 新颖的多尺度前馈网络(MSFN) | 2024年4月最新成果

💡💡💡本文独家改进:多尺度前馈网络(MSFN),通过提取不同尺度的特征来增强特征提取能力,2024年最新的改进思路 💡💡💡创新点:多尺度前馈网络创新十足,抢先使用 💡💡💡如何跟YOLOv8结合:1)放在backbone后增强对全局和局部特征的提取能力;2)放在detect…...

从零开始:一步步学习爬虫技术的实用指南(一)

从零开始&#xff1a;一步步学习爬虫技术的实用指南&#xff08;一&#xff09; Urllib1.什么是互联网爬虫2.爬虫核心3.爬虫的用途4.爬虫的分类4.1 通用爬虫&#xff1a;4.1 聚焦爬虫&#xff1a; 5.反爬手段5.1 User‐Agent&#xff1a;5.2.代理IP5.3.验证码访问5.4.动态加载网…...

Python面向对象详解

文章目录 类和继承变量保护类装饰器 类和继承 Python虽然以函数式著称&#xff0c;但在Python中&#xff0c;万物皆对象&#xff0c;其对面向对象编程是有着非常不错的支持的。类是面向对象的核心数据类型&#xff0c;下面代码就创建了一个Person类。 class Person:count 0d…...

思维题锻炼-最小数字

思维题锻炼-最小数字 目录题目描述输入样例输出样例代码 目录 题目描述 给一串数字&#xff0c;求出最小的整数&#xff0c;不能是原数字串中的数字&#xff0c;也不能由数字串中的数字相加得到 输入样例 5 2 1输出样例 4代码 #include<bits/stdc.h> #include<s…...

ubuntu20.04 运行 lio-sam 流程记录

ubuntu20.04 运行 lio-sam 一、安装和编译1.1、安装 ROS11.2、安装 gtsam1.3、安装依赖1.4、下载源码1.5、修改文件1.6、编译和运行 二、官方数据集的运行2.1、casual_walk_2.bag2.2、outdoor.bag、west.bag2.3、park.bag 三、一些比较好的参考链接 记录流程&#xff0c;方便自…...

P5356 [Ynoi2017] 由乃打扑克

我手把手教她打扑克 qwq 综合分析一下2个操作&#xff0c;查找区间第k小的值&#xff0c;感觉可以用主席树&#xff0c;区间修改那没事了 考虑分块做法,块长B 分析第一个操作 只需要维护数列的单调性&#xff0c;然后二分答案上二分就ok了 分析第二个操作 维护一个加法懒…...

随机潮流应对不确定性?计及分布式发电的配电系统随机潮流计算程序代码!

前言 随着分布式电源在电力系统中所占比例的不断扩大,研究分布式发电对系统稳态运行的影响势在必行。带分布式发电的潮流计算常常用来评估其并网后对系统的影响&#xff0c;同时它也是分析分布式发电对电网稳定性的影响等其他理论研究工作的基础。然而&#xff0c;许多分布式发…...

Oracle表空间满清理方案汇总分享

目录 前言思考 一、第一种增加表空间的数据文件数量达到总容量的提升 二、第二种解决方案针对system和sysaux的操作 2.1SYSTEM表空间优化 2.2sysaux表空间回收 2.2.1针对sysaux的表空间爆满还有第二套方案维护 三、第三种解决方案使用alter tablespace resize更改表空间的…...

基于单片机数码管20V电压表仿真设计

**单片机设计介绍&#xff0c;基于单片机数码管20V电压表仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机数码管20V电压表仿真设计的主要目的是通过单片机和数码管显示电路实现一个能够测量0到20V直流电压的电…...

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型…...

柔性LED灯丝DIY:从电路原理到创意饰品制作全攻略

1. 项目概述&#xff1a;当生日遇上柔性LED灯丝给孩子的生日派对准备一份独一无二的、会发光的惊喜&#xff0c;是很多家长和手工爱好者的心愿。这次&#xff0c;我们不买现成的塑料灯牌&#xff0c;而是亲手做一个能戴在头上或挂在脖子上的“生日数字灯冠”。这个项目的核心&a…...

iOS越狱终极指南:解锁iPhone隐藏功能的3个关键步骤

iOS越狱终极指南&#xff1a;解锁iPhone隐藏功能的3个关键步骤 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &#x1f447; 项目地址: ht…...

Claude-Code-KnowCraft:轻量级代码知识库构建与智能问答实践

1. 项目概述与核心价值最近在跟几个做AI应用开发的朋友聊天&#xff0c;大家普遍有个痛点&#xff1a;想把Claude这类大语言模型&#xff08;LLM&#xff09;的能力深度集成到自己的代码库分析工具里&#xff0c;但发现现有的方案要么太重&#xff0c;要么太浅。太重的是指那些…...

AI增强型写作工具Hermes-Writer:为开发者打造的智能写作助手

1. 项目概述&#xff1a;一个面向开发者的智能写作助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫dav-niu474/Hermes-Writer。乍一看标题&#xff0c;你可能会觉得这又是一个普通的Markdown编辑器或者写作工具。但如果你点进去&#xff0c;仔细研究一下它的README、代…...

如何永久保存你的微信聊天记录?WeChatExporter开源工具完整指南

如何永久保存你的微信聊天记录&#xff1f;WeChatExporter开源工具完整指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾经历过手机丢失、微信重装后珍贵聊天…...

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置:告别零散文件,打造清晰结构

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置&#xff1a;告别零散文件&#xff0c;打造清晰结构 对于卫星导航领域的开发者而言&#xff0c;RTKLIB无疑是一个绕不开的开源项目。这个由日本学者Tomoji Takasu开发的GNSS定位软件&#xff0c;以其强大的功能和开放的架构…...

保姆级教程:用STM8S207R6和FD6288T自制BLDC驱动板,从原理图到代码框架搭建

从零构建BLDC驱动板&#xff1a;STM8S207R6与FD6288T实战指南 在创客和嵌入式开发领域&#xff0c;无刷直流电机(BLDC)控制一直是兼具挑战性和实用性的热门方向。与有刷电机相比&#xff0c;BLDC电机具有高效率、长寿命和低噪音等优势&#xff0c;但驱动电路和控制系统也更为复…...

Go语言LLM应用开发框架:统一接口与工具调用实战

1. 项目概述&#xff1a;一个为Go语言量身打造的LLM应用开发框架如果你正在用Go语言构建一个需要集成大语言模型&#xff08;LLM&#xff09;的应用&#xff0c;比如一个智能客服机器人、一个代码生成工具&#xff0c;或者一个文档分析系统&#xff0c;那么你很可能已经体会过那…...

Midjourney针孔摄影风格实战手册(含--s 120+--stylize微调对照表):实测137组prompt,仅3组达成真实暗角衰减与中心锐度坍缩

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney针孔摄影风格的本质解构 针孔摄影&#xff08;Pinhole Photography&#xff09;并非一种后期滤镜&#xff0c;而是一种基于光学物理原理的成像范式——无镜头、小孔成像、无限景深、软焦边缘…...

ARM Cortex-A520集群架构与缓存优化配置指南

1. ARM Cortex-A520集群架构概述ARM Cortex-A520作为新一代高效能处理器核心&#xff0c;其集群配置能力直接影响着嵌入式系统和移动设备的整体性能表现。A520集群采用多核共享缓存架构&#xff0c;支持从单核到多核的灵活扩展&#xff0c;为开发者提供了丰富的参数配置空间。在…...