[ CodeVS冲杯之路 ] P1295
2024-09-04 12:46:20
不充钱,你怎么AC?
题目:http://codevs.cn/problem/1295/
数据很小,直接DFS,加上剪枝
剪枝其实就是判重,首先深度是行下标,这里自带不重复,枚举的列下标,用 f 记录每一列是否用过
斜着的用下标相加减控制,如下图
x 为横坐标,y 为纵坐标
对于每根红线,x+y 相等
对于每根蓝线,n-x-y 相等
我们就用 g 表示一条红线是否用过,y 表示一条蓝线是否用过
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
int ans,n;
bool f[N],g[N],y[N];
void dfs(int x)
{
if (x>n)
{
ans++;
return;
}
int i;
for (i=;i<=n;i++)
{
if (f[i]||g[x+i]||y[n-x+i]) continue;
f[i]=;
g[x+i]=;
y[n-x+i]=;
dfs(x+);
f[i]=;
g[x+i]=;
y[n-x+i]=;
}
}
int main()
{
scanf("%d",&n);
dfs();
printf("%d",ans);
return ;
}
最新文章
- vim 命令加解密文件
- js变量及其作用域
- Hibernate 开发流程
- 【py】配置python环境
- 数据缓存iOS
- JSTL-core核心代码标签库中的if,set,out等的功能
- 常用SQL语句学习整理
- Rabbitmq集群高可用部署详细
- Mac appium apk覆盖性安装的问题
- Spark:Spark 编程模型及快速入门
- 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探
- Deep Learning (中文版&;英文版)
- js-jQuery性能优化(一)
- Node.js用6行代码1个JS文件搭建一个HTTP静态服务器
- redis主从配置<;转>;
- Linux 用户和用户组详解
- Js 中的事件委托/事件代理
- Windows上安装QT4后更改MinGW的路径
- java 面试算法题
- UNITY 打APK是如何确定哪些资源有用哪些无用的