一、问题描述

问题描述:在N×N格的国际象棋上摆放N个皇后,使其不能互相攻击,即不能处于同一列或同一行,也不能处在同一斜线上,请问有多少种摆法?

不能放皇后的位置及位置之间的关系:

二、代码实现

#include <stdio.h>int array[20];//数组大小,a[i] = j表示第i个皇后放在第i行的第j个位置
int n,cnt;//n为皇后的个数 int check(int x,int y)//x为行,y为放置的位置
{int i = 1;for(;i <= x ;i++){if(array[i] == y)return 0;//前面几行已经在y位置上有元素 if(array[i] + i == x + y)return 0;//上右下左对角线if(i - array[i] == x-y)return 0;//上左下右对角线 }return 1;
}
void dfs(int row)//第row个皇后
{int i,j;if(row == n+1)//此时已有一个解{cnt++;for(j=1;j<=n;j++){printf("%d ",array[j]);}printf("\n");return ;}for(i = 1;i <= n;i++)//从一横排的所有位置开始,判断是否该位置能放皇后 {if(check(row,i)) //第row个皇后能否放在i位置{array[row] = i;dfs(row+1);//接着放下一个array[row] = 0;//回溯 } }
}
void main()
{scanf("%d",&n);dfs(1);printf("%d个皇后一共有%d个解",n,cnt);
} 

三、运行结果

四、总结

主要是要搞清楚不能放的位置之间的数字关系

N皇后问题(C语言)—回溯法相关推荐

  1. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

    问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...

  2. C语言回溯法九宫格数独问题

    Problem H 数独游戏 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 数独游戏规则 在9阶方阵中,包含了81个小格(九列九行),其中又再分成九个小正方形(称为宫),每 ...

  3. c语言回溯法,回溯法 实现 排列组合(C 语言版本)

    * 所谓回溯:就是搜索一棵状态树的过程,这个过程类似于图的深度优先 * 搜索(DFS),在搜索的每一步(这里的每一步对应搜索树的第i层)中 * 产生一个正确的解,然后在以后的每一步搜索过程中,都检查其 ...

  4. 回溯法(八皇后问题)及C语言实现

    回溯法,又被称为"试探法".解决问题时,每进行一步,都是抱着试试看的态度,如果发现当前选择并不是最好的,或者这么走下去肯定达不到目标,立刻做回退操作重新选择.这种走不通就回退再走的 ...

  5. 从八皇后问题思考回溯法

    一.八皇后问题 八皇后是经典的回溯法问题,题目是说将八个皇后,放到8×8的国际象棋棋盘中中,使得任意两个皇后都不能在同一行.同一列以及同一条对角线上.下图是一个四皇后的搜索示意图. 八皇后问题可以通过 ...

  6. python回溯算法_什么是回溯法,Python解法交流?

    只有去多做题,才能慢慢掌握.力扣​leetcode-cn.com LeetCode 上的解释 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 ...

  7. n皇后问题c语言_九章算法 | N皇后问题

    n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线). 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的 ...

  8. 八皇后问题(回溯法)C语言求解

    方法一: //N_Queen #include<iostream> using namespace std; #define N 100 //定义最多求解100皇后问题 int x[N]; ...

  9. c语言实现全排列并存储,C语言实现全排列和回溯法总结

    一.递归实现全排列 #include"cstdio" int A[]; void print_permutation(int n,int *A,int cur){ if(cur== ...

最新文章

  1. 部署可扩展的目标检测管道:推理过程(上)
  2. Android Studio 插件的使用
  3. js中json对象取键和值
  4. Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据
  5. 工业机器人九龙坡区职教中心_山西省襄汾县职教中心“智能工业机器人订单班”学生集体观看直播“2020一带一路暨金砖国家技能发展与技术创新大赛”...
  6. set和multiset集合容器
  7. Qt简单的解析Json数据例子(一)
  8. Java程序实现密钥库的维护
  9. php怎么修改滑动条,修改滚动条样式的方法
  10. Android Studio打开项目提示找不到sdk路径的问题。
  11. 屏蔽网站广告的Chrome谷歌浏览器插件推荐和下载地址
  12. 百度OCR图像识别(包含自定义模板)
  13. 哈工大2022形式语言与自动机期末
  14. 二维数组定义及初始化
  15. 怎样校验MD5码及sha1码数值(适用于Windows及Linux平台)
  16. NLP task2 N-Gram
  17. git 报错解决方法:Your branch is ahead of ‘origin/dev‘ by 65 commits.
  18. Linux下强制关闭程序
  19. ListView+Fragment实现导航栏
  20. vue集成svg-sprite-loader

热门文章

  1. 百度地图只出现网格的问题
  2. 防cf上unordered_map被卡
  3. FM模型、FFM模型
  4. asp功放怎么装_功放机维修常见方法,小编教您如何维修功放机
  5. 看名字测缘分、名字测身价
  6. 通过FPGA实现矩阵的伪逆pinv计算
  7. jquery 遍历筛选数组有多种方法与函数
  8. resources目录下存放支付宝证书获取不到原因
  9. 管理软件风险,防患于未然
  10. BZOJ 2149 拆迁队 斜率优化DP 主席树