信息学奥赛一本通(1213:八皇后问题)
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:八皇后问题)相关推荐
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...
- 信息学奥赛一本通在线提交地址
信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 《信息学奥赛一本通 提高篇》
提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
最新文章
- 微信小程序富文本解析点击图片放大_微信小程序解析富文本过程详解
- 学习大玩家的ROS笔记
- 01.WPF中制作无边框窗体
- ORA-01940: cannot drop a user that is currently connected解决方法
- [poco] 访问数据库
- mysql不能写重复键_mysql主键重复,不抱错,只更新的骚操作 (如果没有插入,如果有更新)...
- jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
- W3School-CSS 字体(font)实例
- 【数据分析】基于matlab伊藤微分方程布朗运动分析【含Matlab源码 261期】
- Let 's watch TV
- mediasoup server 启动失败排查
- 基金指数温度怎么算_温度换算(指数基金温度计算器)
- 什么是字节?字节怎么进行换算?
- sql日期格式转换函数_SQL转换日期函数和格式
- java 接口 protected_为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default...
- 分析拼多多分享文案的技巧
- XMind中记笔记的一些实用技巧!
- 【coppeliasim】高效传送带
- 爬虫框架:Scrapy 快速入门
- BlueTooth: 蓝牙技术入门者指南
热门文章
- 【Android开发坑系列】之PopupWindow
- 为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法
- 别学了!这 5 种即将消亡的编程语言
- 消息队列之推还是拉,RocketMQ 和 Kafka是如何做的?
- 牛逼!计算机基础知识总结与操作系统 PDF 开放下载了!
- JEECG第14期架构培训班开始招生啦,本周三开班!
- java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
- centos7救援模式--单机模式(单用户模式)
- 初级程序员为避免淘汰该怎么办?
- Redux 进阶 - react 全家桶学习笔记(二)