取数游戏(dfs)

前言:

该题取自洛谷P1123,题主用的dfs(深度优先搜索)

题目描述:

 

数据范围:

思路: 

思路见代码,注释的很清晰嗷

AC代码:

#include <iostream>
#include <algorithm>
#include <string.h>   //memset所在头文件
//此处使用万能头也ok(题主用的VS2022,不能使用万能头qvq)
using namespace std;
int t;
int n, m;
int a[10][10];    //输入的矩阵的数
int vis[10][10] ;  //标记该数是否被使用过
int mx = 0;
void dfs(int i, int j, int sum) {
	//i是行,j是列,sum是总和
	//从第一个开始搜索,搜索完一行,进入下一行
	if (i == n + 1) {
		//i==n+1时,证明矩阵搜索完毕,进行比较
		mx = max(mx, sum);
		return;
	}
	int ii = i;  //ii,jj分别为下一个遍历的数的行和列
	int jj = j + 1;
	//当jj大于m时,该行搜索完毕,进入下一行
	if (jj > m) {
		ii++;
		jj = 1;
	}
	//当取该数时
	if (vis[i - 1][j] + vis[i-1][j + 1] + vis[i - 1][j - 1] + vis[i][j - 1] + vis[i][j] == 0) {
		//判断周围是否有已选择的数,因为是按顺序选择的,a[i][j]之后的数不需要判断
		vis[i][j] = 1;   //将该数标记为已选择的数
		dfs(ii, jj, sum + a[i][j]);  //递归
		vis[i][j] = 0;   //回溯
	}
	dfs(ii, jj, sum);  //未选择a[i][j]时,sum不需要加
}
int main() {
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while (t--) {
		cin >> n >> m;
		//因为有多组数据,对mx,数组a,vis进行初始化
		mx = 0;   
		memset(a, '\0', sizeof(a));
		memset(vis, 0, sizeof(vis));
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				cin >> a[i][j];
			}
		}
		dfs(1, 1, 0);  //从矩阵第一个数进行搜索
		cout << mx << endl;
	}
}

 

相关推荐

  1. [动态规划]矩阵游戏

    2024-04-12 19:26:02       29 阅读
  2. C++ [NOIP2007 提高组] 矩阵游戏

    2024-04-12 19:26:02       28 阅读
  3. P1005 [NOIP2007 提高组] 矩阵游戏

    2024-04-12 19:26:02       15 阅读
  4. 火柴游戏

    2024-04-12 19:26:02       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 19:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 19:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 19:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 19:26:02       18 阅读

热门阅读

  1. python内置函数dir()、divmod()详解

    2024-04-12 19:26:02       15 阅读
  2. DFL在网络安全审计中的应用研究的开题报告

    2024-04-12 19:26:02       15 阅读
  3. 对用户上传图片进行压缩

    2024-04-12 19:26:02       13 阅读
  4. 请求的数据类型{ }{[ ]} 解析

    2024-04-12 19:26:02       19 阅读
  5. fastjson2 简单使用案例

    2024-04-12 19:26:02       14 阅读
  6. Qt安装 qt-unified-windows-x64-online.exe下载慢

    2024-04-12 19:26:02       11 阅读
  7. 苍穹外卖总结

    2024-04-12 19:26:02       15 阅读