洛谷P1219 八皇后 我。。。。。。
代码1 (学弟版)
#include<bits/stdc++.h>
using namespace std;
int l[15];
bool s[15]; //sad函数判断是否在同一斜线上,abs()表示绝对值
bool sad(int x,int i) { //x是当前行,i是当前行的棋子的位置
for(int j=1; j<x; j++) { //j 是之前的行 l[j] 表示在第j行的位置
if(abs(x-j)==abs(i-l[j])) return false; //如果在同一斜线上,那么行-列的绝对值 =之前的行-列的绝对值
}
return true;
}
int n,cnt;
void print() {
for (int i = 1; i <= n; ++i)
cout<<l[i]<<" ";
cout<<endl; //换行
}
inline void dfs(int x) {
// cout << x << endl; debug部分
if (x == n + 1) {
++cnt;
if (cnt <= 3)
print();
return;
}
for(int i=1; i<=n; i++) { //x是当前行,i是当前行的位置
if(s[i]||!sad(x,i)) //如果在同一斜线上,那么行-列的绝对值 =之前的行-列的绝对值
continue;
//cout<<"asdawe"<<endl; debug部分
s[i]=true;
l[x]=i;
dfs(x+1);
s[i]=false;
l[x]=0;
}
}
int main() {
cin>>n;
dfs(1);
cout<<cnt;
return 0;
}
代码2 学长版!!
int chess[15];
bool flag[100];
int all = 0;
for(int i = 1; i<locate; i++)
if(abs(chess[i] - num) == (locate-i))
return false;
return true;
}
for(int i = 1; i<=N; i++)
cout << chess[i] << " ";
cout << endl;
}
if(num==N+1) {
all++;
if(all<=3)
print();
return;
}
for(int i = 1; i<=N; i++) {
if(!flag[i] && isUseful(i,num)) {
chess[num] = i;
flag[i] = true;
dfs(num+1);
flag[i] = false;
}
}
}
cin >> N;
dfs(1);
cout << all <<endl;
return 0;
}
#include<cstring>
int r[15], c[15], zd[30], cd[30],cnt;
int n;
void print(){
for (int i = 1; i <= n; ++i)
printf("%d ", r[i]);
puts("");
}
inline void dfs(int x){
if (x == n + 1){
++cnt;
if (cnt <= 3)
print();
return;
}
for (int i = 1; i <= n; ++i){
if (c[i] || zd[x - i + n + 1] || cd[i + x])
continue;
c[i] = zd[x - i + n + 1] = cd[i + x] = 1;
r[x] = i;
dfs(x + 1);
c[i] = zd[x - i + n + 1] = cd[i + x] = 0;
r[x] = 0;
}
}
int main(){
scanf("%d", &n);
dfs(1);
printf("%d", cnt);
return 0;
}
洛谷P1219 八皇后 我。。。。。。的更多相关文章
- 洛谷 P1219 八皇后【经典DFS,温习搜索】
P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...
- 洛谷 P1219八皇后
把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...
- 洛谷 p1219 八皇后
刚参加完蓝桥杯 弱鸡错了好几道..回头一看确实不难 写起来还是挺慢的 于是开始了刷题的道路 蓝桥杯又名搜索杯 暴力杯...于是先从dfs刷起 八皇后是很经典的dfs问题 洛谷的这道题是这样的 上面的布 ...
- 【洛谷P1219 八皇后】
参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...
- 洛谷P1219 八皇后【dfs】
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷 P1219 八皇后题解
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷P1219 八皇后
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷 - P1219 - 八皇后 - dfs
https://www.luogu.org/problemnew/show/P1219 一开始朴素检查对角线就TLE了,给对角线编码之后压缩了13倍时间? 找了很久的bug居然是&&写 ...
- 洛谷P2105 K皇后
To 洛谷.2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的 ...
随机推荐
- 解决掉你心中 js function与Function的关系的疑问
前言 在网上有很多关于js function 与 Function直接关系的文章. 但是我感觉过于抽象化了,那么如何是具体化的解释? 正文部分为个人理解部分,如有不对望指出. 正文 <scrip ...
- Hibernate框架预览以及基础介绍
前言 从本节我们开始进入到对于Hibernate框架的学习,当前Hibernate框架还未正式发布6.0稳定版本,所以这里我们以5.4.12Final版本进行讲解. Hibernate框架 Hiber ...
- 进阶之路 | 奇妙的Drawable之旅
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: Drawable简介 Drawable分类 自定义Drawable 一.为什么要学习Drawabl ...
- 二次开发的Selenium Demo版本
文件名你们自己命名就好,至于为什么要重写强制位移的函数呢,是因为Mac上Selenium不支持拖拽,只能这样做了,4个文件--------------------------------------- ...
- JS正则表达式的创建、匹配字符串、转义、字符类、重复以及常用字符
正则表达式都是操作字符串的 作用:对数据进行查找.替换.有效性验证 创建正则表达式的两种方式: // 字面量方式 /js/ // 构造函数方式 regular expression new RegEx ...
- 万科A顺利出局,布局一心堂
万科的这两日的走势还不错,今日冲高回落,顺利出局. 那么有选中了一只 股票 一心堂 资金量W 12 建仓价格 22.2 加仓系数 1.5 加仓间隔 1.50% 总盈利比 ...
- C#中WinFrom保存文件SaveFileDialog类的使用方法
C#中WinFrom保存文件SaveFileDialog类的使用方法 使用的命名空间是:System.Windows.Forms; 常用属性: Title:保存对话框的标题,默认为"另存 ...
- python練習
#登录,账户密码储存在文件中,限制登录 count = 0 for i in range(3): b = input("账号:") c = b + "," + ...
- 搭建网页HTML结构
div 块级标签 span 行内标签 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- UVA-1588
只用C来写 题目:https://vjudge.net/problem/UVA-1588 #include<stdio.h> #include<string.h> #defin ...