当前位置: 首页 > news >正文

N皇后问题解的个数

 

暴力递归

#include <stdio.h>int count=0,a[15],flag;
void queen(int,int);
int main(){int n;scanf("%d",&n);queen(n,n);printf("%d",count);
}
void queen(int n,int n0){if(n<1){flag=1;for(int i=1;i<=n0;i++){for(int j=1;j<=n0;j++){if(a[i]==a[j]&&i!=j)flag=0;if((a[i]-a[j]==i-j&&i!=j)||(a[i]-a[j]==j-i&&i!=j))flag=0;}}if(flag==1)count++;}else{for(int i=1;i<=n0;i++){a[n]=i;queen(n-1,n0);}}
}

不那么暴力递归

#include <stdio.h>int count=0,a[15],flag;
void queen(int,int);
int main(){int n;scanf("%d",&n);for(int i=0;i<=0;i++){a[i]=0;}queen(n,n);printf("%d",count);
}
int isconflict(int n0){for(int i=1;i<=n0;i++){for(int j=1;j<=n0;j++){if(a[i]==a[j]&&i!=j){return 0;}if((a[i]-a[j]==i-j&&i!=j)||(a[i]-a[j]==j-i&&i!=j)){return 0;}}}return 1;
}
void queen(int n,int n0){if(n<1){flag=1;flag= isconflict(n0);if(flag==1)count++;}else{for(int i=1;i<=n0;i++){for(int j=n0;j>n;j--){if(a[j]==i&&i+1<=n0)i++;if((i-a[j]==n-j||a[j]-i==n-j)&&i+1<=n0)i++;}a[n]=i;queen(n-1,n0);}}
}

 最终

#include <stdio.h>int count, mark;void test(int col, int ld, int rd) {if (col != mark) {int pos = mark & ~(col | ld | rd);while (pos) {int p = pos & -pos;pos -= p;test(col | p, ((ld | p) << 1) & mark, (rd | p) >> 1);}} else {count++;}
}int main() {int n;scanf("%d", &n);count = 0;mark = 1;mark = (mark << n) - 1;test(0, 0, 0);printf("%d\n", count);return 0;
}

http://www.lryc.cn/news/242948.html

相关文章:

  • php订单发起退款(余额和微信支付)
  • 【SpringCloud】认识微服务、服务拆分以及远程调用
  • Mysql基础操作(命令行)
  • 网站遇到DDOS攻击怎么办?
  • 中间件渗透测试-Server2131(解析+环境)
  • 探究Kafka原理-2.Kafka基本命令实操
  • Linux网卡没有eth0显示ens33原因以及解决办法
  • 1.前端--基本概念【2023.11.25】
  • 计算机视觉面试题-01
  • 108. 将有序数组转换为二叉搜索树 --力扣 --JAVA
  • Springboot实现增删改差
  • 【程序员的自我修养01】编译流程概述
  • 在PyCharm中正确设置Python项目
  • scoop bucket qq脚本分析(qq绿色安装包制作)
  • Elasticsearch:将最大内积引入 Lucene
  • YOLOV7主干改进,使用fasternet轻量化改进主干(完整教程)
  • DALSA.SaperaLT.SapClassBasic无法加载,试图加载格式不正确的程序,c#
  • 设计模式-创建型模式-工厂方法模式
  • 科研/比赛必备工具及系列笔记集合
  • 萨科微举办工作交流和业务分享会
  • 一篇文章让你入门python集合和字典
  • 各种工具的快捷键或命令
  • 【Web】preg_match绕过相关例题wp
  • XSLVGL2.0 User Manual 主题管理器(v2.0)
  • visionOS空间计算实战开发教程Day 2 使用RealityKit显示3D素材
  • 【图解系列】一张图带你了解 DevOps 生态工具
  • Oracle的安装及使用流程
  • CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
  • Mysql 解决Invalid default value for ‘created_at‘
  • Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)