不充钱,你怎么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 ;
}

最新文章

  1. vim 命令加解密文件
  2. js变量及其作用域
  3. Hibernate 开发流程
  4. 【py】配置python环境
  5. 数据缓存iOS
  6. JSTL-core核心代码标签库中的if,set,out等的功能
  7. 常用SQL语句学习整理
  8. Rabbitmq集群高可用部署详细
  9. Mac appium apk覆盖性安装的问题
  10. Spark:Spark 编程模型及快速入门
  11. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探
  12. Deep Learning (中文版&amp;英文版)
  13. js-jQuery性能优化(一)
  14. Node.js用6行代码1个JS文件搭建一个HTTP静态服务器
  15. redis主从配置&lt;转&gt;
  16. Linux 用户和用户组详解
  17. Js 中的事件委托/事件代理
  18. Windows上安装QT4后更改MinGW的路径
  19. java 面试算法题
  20. UNITY 打APK是如何确定哪些资源有用哪些无用的

热门文章

  1. 快速排序算法Java实现
  2. POJ:2010-Moo University - Financial Aid
  3. poj 2674 线性世界 弹性碰撞
  4. 19,django组件之contenttype(一)
  5. linux中jdk的安装与mysql 的安装
  6. centos 6.X 关闭selinux
  7. Android如何实现毛玻璃效果之Android高级模糊技术
  8. angular 模块化之directive
  9. DOS程序员手册(四)
  10. jmeter学习(二),如何安装jmeter?