首页 > 其他分享 >N皇后非递归解法

N皇后非递归解法

时间:2023-10-29 21:03:57浏览次数:32  
标签:return cout 递归 int hang result 皇后 解法

#include<iostream>
#include<cmath>
using namespace std;
#define N 8
int q[N+1];
int check(int hang){
//该方法判断hang所在列是否合法
for(int i=1;i<hang;i++){
if(q[hang]==q[i]||abs(hang-i)==abs(q[hang]-q[i])){
return 0;
}
}
return 1;
}
//N皇后的非递归解法
void queen(){
int j = 1;//从第一行开始
int result = 0;//用于计数,有多少组解
while(j>=1){
q[j] = q[j] + 1;
while(q[j]<=N && !check(j)){
q[j] = q[j] + 1;
}
//说明第j行的皇后合法
if(q[j]<=N){
if(j==N){
//得到一组解
result = result +1;
cout<<"第"<<result<<"组解如下"<<endl;
for(int i=1;i<=N;i++){
cout<<"q["<<i<<"] = "<<q[i]<<"\t";
}
cout<<endl;
}
else{
j = j +1;
}
}//如果第j行的皇后不合法
else{
q[j] = 0;
j = j - 1;
}
}
}
int main(){
queen();
return 0;
}

标签:return,cout,递归,int,hang,result,皇后,解法
From: https://www.cnblogs.com/laohei114514/p/17796439.html

相关文章

  • 【基础算法】递归
    一、递归是什么递归是一种应用非常广泛的算法(或者变成技巧),很多算法的实现都需要依赖递归,比如,归并排序、快速排序、DFS深度优先搜索、二叉树的前中后序遍历等。所以,搞懂递归非常重要。简单来说,递归就是在函数中调用自己。递归求解问题分为“递”和“归”2个过程。 我们通过......
  • 递归函数
    斐波那契数列(1)#include<iostream>usingnamespacestd;intx(intn){if(n<=2){return1;}else{returnx(n-1)+x(n-2);}}intmain(){intn;cin>>n;inta=x(n);cout<<a;return0;}斐波那契......
  • 运用递归学习新知识——插入排序
    还是老样子,先讲一下插入排序的一个概念,比如校合唱团要按身高排队,从左到右由矮到高,小糖同学左边的同学已经按照身高站好了,右边还很乱,于是团长小蓝姐姐想了一个办法,她叫小糖同学往左看,小糖同学左边第一位叫男低1号,左边第二位叫男低2号,右边第一位叫男高1号,右边第二位叫男高2号,以此类......
  • 重学递归思想,体悟数据结构奥妙
       说来好笑,暑假一腔热血想进acm,在学插入排序,归并排序这两个玩意,耗费了我整整一个星期都没搞懂,一度让我想放弃,觉得自己刚开始学算法就被打败了,不配coding了,后面请教别人,才发现里面有个递归思想我还不会,所以很痛苦。。。暑假结束了,递归我还没那么懂,今天来复仇了     ......
  • 数据结构与算法(LeetCode) 第二节 链表结构、栈、队列、递归行为、哈希表和有序表
    一、链表结构1.单向链表节点结构publicclassNode{ publicintvalue;publicNodenext;publicNode(intdata){value=data;}}2.双向链表节点结构publicclassDoubleNode{publicintvalue;publicDoubleNodelast;publicDouble......
  • 递归查询
    有时候表结构是层级关系的父子结构,要查出所有有的子,可用如下的sql,递归查询,以mysql为例:1、查出父下所有子WITHRECURSIVEproducttypeAS(SELECT'03f9096d-bd5d-11ed-a58a-7af8c5058daf'FinanClass,id,protypeid,typename,typelevelFROMt_base_commontypeWHEREid='0......
  • linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档
    linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档1.解压缩压缩命令zip-p-rmymail-1026.zipmymail/解压命令unzipmymail-1026.zip2.复制将文件file1复制到dir1目录下的file2文件cpfile1dir1/file2将文件夹source_dir复制到target_dir目前并且修改......
  • 汉诺塔问题(递归算法思想)
    ⛩️博主主页:@威化小餅干......
  • 递归之上楼梯
    mycode:intf[46];intclimbStairs(intn){  f[0]=1;  f[1]=1;  inti;  for(i=2;i<=n;++i){    f[i]=f[i-1]+f[i-2];  }returnf[n];//原来写的是f[i],但是这是错的,因为......
  • MySQL CTE递归查询 Data too long for colum‘xxx‘ at row 1
    在mysql8使用 CTE递归查询时,出现了这个报错WITHrecursiveareaAS(SELECTarea_name,area_codeFROMsys_area_treeWHEREarea_category='1'ANDparent_codeISNULLUNIONALLSELECTconcat(t1.area_name,'/',t.area_name),t.area_code......