【CodeVS】1295 N皇后
2015-06-21 22:53
246 查看
【分析】
枚举。
关键是斜线。
学过一次函数就不用担心了。
不难发现,矛盾的点在同一直线,且斜率为±1。
在斜率为1的线中,y=x+b,-n+1<=b<=n-1。
在斜率为-1的线中,y=-x+b,2<=b<=n+n-1。
按行来枚举,在维护一个保证不同列的东西。
由于数据小,本人用了状态压缩来维护......
【代码】
枚举。
关键是斜线。
学过一次函数就不用担心了。
不难发现,矛盾的点在同一直线,且斜率为±1。
在斜率为1的线中,y=x+b,-n+1<=b<=n-1。
在斜率为-1的线中,y=-x+b,2<=b<=n+n-1。
按行来枚举,在维护一个保证不同列的东西。
由于数据小,本人用了状态压缩来维护......
【代码】
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int n,cnt; int d,u,c; void dfs(int y) { if (y==n+1) {cnt++;return;} for (int x=1;x<=n;x++) if (!(c&1<<x)&&!(u&1<<y-x+n)&&!(d&1<<x+y-1)) { c|=1<<x,u|=1<<y-x+n,d|=1<<x+y-1; dfs(y+1); c^=1<<x,u^=1<<y-x+n,d^=1<<x+y-1; } } int main(void) { scanf("%d",&n); dfs(1); printf("%d\n",cnt); return 0; }
相关文章推荐
- Sunglasses
- LoaderManager使用详解(一)---没有Loader之前的世界
- HDU 3472 HS BDC(混合欧拉图(使用最大流))模板
- 个人作业-《人,绩效和职业道德》读后感
- 突然想把一生都奉献给MySQL
- 几款开源的图形化Redis客户端管理软件
- hdu 1163
- Memcached笔记——(三)Memcached使用总结
- java压缩和解压缩Zip、Jar、Gzip文件
- 【硬盘数据恢复】diskgenius怎么用数据恢复教程
- css盒模型
- 程序测试与调试
- linux系统调用和库函数调用的区别
- X5内核的问题
- Qt5.0加载GDAL库文件
- SpringMVC拦截器简单使用
- 读后感
- Android获取App版本号和版本名
- 巨头抱团后 奢侈品电商还有前途吗?
- 黑马程序员——IO流