• 文件名:[作业]
  • 作者:〈漆黑〉
  • 描述:〈 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?请设计程序算出结果。 〉
  • 创建时间:2019.7.10
/****************************
* 文件名:[作业]
* 作者:〈漆黑〉
* 描述:〈  在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?请设计程序算出结果。  〉
* 创建时间:2019.7.10
****************************/
#include<iostream>
#include<stdlib.h>
using namespace std;static int* x;  //用x数组来存放解向量
static int sum; //用sum变量来记录有几个解
int check(int k) {  //查看k皇后是否满足约束条件 for (int i = 0; i < k; i++)if (x[i] == x[k] || abs(x[i] - x[k]) == abs(i - k))  //满足不在同一条斜线和同一列 return 1;return 0;
}
void queen(int n) {int k = 0;            //从皇后0开始放sum = 0;while (k >= 0) {x[k]++;           //摆放第k个皇后(第一次摆放皇后0) while (x[k] < n && check(k) == 1)     //对皇后k进行检测,直到不发生冲突或x[k]越界 x[k]++;    //检测下一列 if (x[k] < n && k == n - 1){//成功for (int i = 0; i < n; i++)cout << x[i] + 1 << " ";cout << endl;sum++;}if (x[k] < n && k < n - 1)     //若皇后还没有摆放完,就摆放下一个皇后k = k+1 k++;else                    //否则就是发生了越界,要进行回溯 {x[k] = -1;k--;}}if (sum == 0)cout << "无解" << endl;
}
int main() {int n = 8;x = new int[n + 1];for (int i = 0; i < n; i++) {x[i] = -1;}queen(n);cout << "一共解的个数为 :" << sum << endl;return 0;
}

【题目】在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?请设计程序算出结果。相关推荐

  1. 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,用Python编写程序,问有多少种摆法?并列举出所有摆法。

    可以扩展问题以使用NxN大小的板来解决难题. 代码 '''N Queens problem'''from functools import reduce from itertools import c ...

  2. 题目95:百鸡问题:一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡,用百元买百鸡。现有n元钱,想买n只鸡。问有多少种买法?(钱要用完)

    题目转载:http://python.wzms.com/s/1/85 题目描述: 百鸡问题:一只公鸡值5元, 一只母鸡值3元,而1元可买3只小鸡,用百元买百鸡. 现有n元钱,想买n只鸡. 问有多少种买 ...

  3. 穷举问题-搬砖某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法? 输入格式:

    某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块.如果想用n人正好搬n块砖,问有多少种搬法? 输入格式: 输入在一行中给出一个正整数n. 输出格式: 输出在每一行显示一种方案,按 ...

  4. 某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法

    题目编号: 136 输入格式: 输入在一行中给出一个正整数n. 输出格式: 输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c ...

  5. 题目54:百钱百鸡 一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡,用百元买百鸡。现有n元钱,想买n只鸡。问有多少种买法?(钱要用完)

    题目转载:http://python.wzms.com/s/1/50 题目描述: 百鸡问题:一只公鸡值5元, 一只母鸡值3元,而1元可买3只小鸡,用百元买百鸡. 现有n元钱,想买n只鸡. 问有多少种买 ...

  6. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  7. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  8. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    文章目录 题目描述 思路 解法一:递归暴力破解 解法二: 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 解法一 ...

  9. 一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳n级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)

    青蛙跳阶级问题其实就是一个递归的问题 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳n级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 先上解法再解释 pub ...

最新文章

  1. Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
  2. 数据库中如何判断某参数为空就不执行where条件
  3. Python 黑魔法 --- 描述器(descriptor)
  4. 设备树与驱动的关系_裸机程序如何驱动硬件?
  5. L :WeChat Walk
  6. smartdeblur有手机版吗_《GTA5》高仿手机版问世,更新高清城市地图后你会喜欢吗?...
  7. 喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...
  8. vnc 字体设置_Xterm字体大小的设置
  9. Windows 禁止mysql 自动更新
  10. SQL2008数据库的备份与还原
  11. 星云的Linux专用学习手册
  12. java excel导入_一场关于Java.lang.String类的极限调优操作
  13. linux入门和简单应用举例
  14. Python | 股票数据可视化
  15. 360 os3.0 android7.1,【360 N6 Pro】360OS安卓7.1系统V3.0.087付费纯净版ROOT刷机包
  16. 弹性卡箍零件自动化检测 与包装生产线的研制
  17. 【算法与数据结构】—— 并查集
  18. 【无人机控制】四旋翼飞行器飞行控制系统含Matlab源码
  19. 学习uni-app之微信登录
  20. 线性代数的本质——学习笔记

热门文章

  1. 开网店需要多少钱——主流网店系统价格表
  2. Words 2016.9.4
  3. 淘宝抢购python代码-仅供学习
  4. 优友机器人价格_优友,大型商用服务机器人
  5. 地理信息系统(ArcGIS)在水文水资源、水环境中的实践技术应用及案例分析
  6. oh no something has gone wrong
  7. 5+App用户获取微信登录
  8. Node-第三方模块
  9. 谷歌excel表格批量翻译各国语言
  10. sympy库使用:第3部分 简化数学表达式(翻译 tcy)