1213:八皇后问题

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 19355     通过数: 6957

【题目描述】

在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。

【输入】

(无)

【输出】

按给定顺序和格式输出所有八皇后问题的解(见样例)。

【输入样例】

(无)

【输出样例】

No. 1
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
No. 2
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0
...以下省略

【分析】

纵向冲突检查:遍历行,判断对应column的值是否为1(冲突)。

左对角线冲突检查:形状为撇(丿),即行为row-1,列为column-1,行递增,列递减依次判断。

右对角线冲突检查:形状为捺(㇏)类似左对角线。

这道题太坑了,输出的时候要 i , j 转换位置。

【参考代码】

#include <stdio.h>
#define QueenSize 8 //这个数等于几,就是几皇后。int num; // 8皇后可行解个数
int chessboard[QueenSize][QueenSize]; // 棋盘 // 打印每种正确的解法
void outPut()
{int i,j;num++;printf("No. %d\n",num);for(i=0;i<QueenSize;i++){for(j=0;j<QueenSize;j++){if(chessboard[j][i]==1)   //这里太坑了printf("1 ");elseprintf("0 ");}printf("\n");}getchar();
}// 判断皇后的落点是否合规
int check(int row, int column)
{int i,j;// 判断纵向是否有冲突for(i=0;i<row;i++){if(chessboard[i][column])return 0;}// 判断右对角线是否有冲突for(i=row-1,j=column-1;i>=0 && j>=0;i--,j--){if(chessboard[i][j]){return 0;}}// 判断左对角线是否有冲突for(i=row-1,j=column+1;i>=0 && j<=QueenSize-1;i--,j++){if (chessboard[i][j]){return 0;}}return 1;
}void dfs(int i)
{int j;for(j=0;j<QueenSize;j++){chessboard[i][j]=1;if(check(i,j)){if(i+1==QueenSize){outPut();}else{dfs(i+1);}}chessboard[i][j] = 0;  // 回溯 }
}int main()
{dfs(0);//printf("%d\n",num);return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1213

信息学奥赛一本通(1213:八皇后问题)相关推荐

  1. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  2. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  3. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  4. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  5. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  6. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  7. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  8. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

  9. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分

    信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...

  10. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

最新文章

  1. 微信小程序富文本解析点击图片放大_微信小程序解析富文本过程详解
  2. 学习大玩家的ROS笔记
  3. 01.WPF中制作无边框窗体
  4. ORA-01940: cannot drop a user that is currently connected解决方法
  5. [poco] 访问数据库
  6. mysql不能写重复键_mysql主键重复,不抱错,只更新的骚操作 (如果没有插入,如果有更新)...
  7. jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
  8. W3School-CSS 字体(font)实例
  9. 【数据分析】基于matlab伊藤微分方程布朗运动分析【含Matlab源码 261期】
  10. Let 's watch TV
  11. mediasoup server 启动失败排查
  12. 基金指数温度怎么算_温度换算(指数基金温度计算器)
  13. 什么是字节?字节怎么进行换算?
  14. sql日期格式转换函数_SQL转换日期函数和格式
  15. java 接口 protected_为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default...
  16. 分析拼多多分享文案的技巧
  17. XMind中记笔记的一些实用技巧!
  18. 【coppeliasim】高效传送带
  19. 爬虫框架:Scrapy 快速入门
  20. BlueTooth: 蓝牙技术入门者指南

热门文章

  1. 【Android开发坑系列】之PopupWindow
  2. 为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法
  3. 别学了!这 5 种即将消亡的编程语言
  4. 消息队列之推还是拉,RocketMQ 和 Kafka是如何做的?
  5. 牛逼!计算机基础知识总结与操作系统 PDF 开放下载了!
  6. JEECG第14期架构培训班开始招生啦,本周三开班!
  7. java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
  8. centos7救援模式--单机模式(单用户模式)
  9. 初级程序员为避免淘汰该怎么办?
  10. Redux 进阶 - react 全家桶学习笔记(二)