洛谷: P1479 宿舍里的故事之五子棋

news/2024/7/20 21:04:01 标签: 深度优先, 算法, 图论

题目链接: https://www.luogu.com.cn/problem/P1479

思路:

这道题目可以打表或者搜索。每个位置有选择/不选择两种情况。搜索的时候我们一行一行的搜索,直到使用的棋子达到n为止。b[i]为五子连线的数量,b[i] = 1表示五子连线的数量可以取i,在最后我们将可以取达到的数量累加在一起就是最终的结果。

代码:

#include <bits/stdc++.h>
using namespace std;
int a[26][26], n, b[20];
int ck() {//是否能够连成一行
	int ans = 0;
	for (int i = 0; i < 5; i++) {
		if (a[i][0] && a[i][1] && a[i][2] && a[i][3] && a[i][4]) ans++;
		if (a[0][i] && a[1][i] && a[2][i] && a[3][i] && a[4][i]) ans++;
	}
	if (a[0][0] && a[1][1] && a[2][2] && a[3][3] && a[4][4]) ans++;
	if (a[0][4] && a[1][3] && a[2][2] && a[3][1] && a[4][0]) ans++;
	return ans;
}
void dfs(int x, int y, int u) {//选择或者不选两种
	if (u == n) {//已经是用完了
		int k = ck();
		b[k] = 1;
		return;
	}
	if (x == 5) return;
	if (y == 5) {
		dfs(x + 1, 0, u);
		return;
	}
	a[x][y] = 1;
	dfs(x, y + 1, u + 1);
	a[x][y] = 0;
	dfs(x, y + 1, u);
}
		
int main() {
	cin >> n;
	dfs(0, 0, 0);
	int sum = 0;
	for (int i = 1; i < 20; i++) {//b[i] i为五子连线的数量
		if (b[i]) sum += i;
	}
	cout << sum << endl;
	return 0;
}

结果:


http://www.niftyadmin.cn/n/5379333.html

相关文章

面试计算机网络框架八股文十问十答第七期

面试计算机网络框架八股文十问十答第七期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;UDP协议为什么不可…

关于C++中的深拷贝

说到深拷贝&#xff0c;是相对于浅拷贝而言的。弄清了浅拷贝&#xff0c;深拷贝也就不言自明了。对C初学者而言&#xff0c;所谓浅拷贝在编写程序过程中往往是无感的。我们一般在写一个类时&#xff0c;多数情况我们只是写了成员变量、成员函数&#xff0c;有时为了赋初值方便&…

深度学习基础之《TensorFlow框架(4)—Operation》

一、常见的OP 1、举例 类型实例标量运算add&#xff0c;sub&#xff0c;mul&#xff0c;div&#xff0c;exp&#xff0c;log&#xff0c;greater&#xff0c;less&#xff0c;equal向量运算concat&#xff0c;slice&#xff0c;splot&#xff0c;canstant&#xff0c;rank&am…

CCF编程能力等级认证GESP—C++6级—20231209

CCF编程能力等级认证GESP—C6级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)闯关游戏工作沟通 答案及解析单选题判断题编程题1编程题2 单选题…

13.5. 多尺度目标检测

这里是对那一节代码的通俗注释&#xff0c;希望对各位学习有帮助。 值得注意的是&#xff0c;multibox_prior函数的宽高计算网络上有争议&#xff0c;此处我仍认为作者的写法是正确的&#xff0c;如果读者有想法&#xff0c;可以在评论区留言&#xff0c;我们进行讨论。 import…

h5和微信小程序实现拍照功能(其中h5暂时无法调用闪光灯)

代码如下 <template><view class"camera"><!-- #ifdef MP --><camera ref"myCamera" id"myCamera" device-position"back" :flash"flash" error"error" style"display: block;"&…

CSS篇--transform

CSS篇–transform 使用transform属性实现元素的位移、旋转、缩放等效果 位移 // 语法 transform:translate(水平移动距离&#xff0c;垂直移动距离) translate() 如果只给一个值&#xff0c;表示x轴方法移动距离 单独设置某个方向的移动距离&#xff1a;translateX() transla…

leetcode hot100爬楼梯

在本题目中&#xff0c;要求爬第n阶有多少种爬法&#xff0c;并且每次只能爬1个或者2个&#xff0c;这明显是动态规划的问题&#xff0c;我们需要用动态规划的解决方式去处理问题。动态规划就是按照正常的顺序由前向后依次推导。而递归则是从结果往前去寻找&#xff08;个人理解…