hdu2553n皇后------回溯算法
定义:
回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。
但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,
#include<cstdio> #include<iostream> #include<string> #include<cstring> #include<cmath> #include<stdlib.h> #include<algorithm> #include<vector> #include<queue> #include<stack> #include<iomanip> using namespace std; int N; int a[11]; int ans; //i表示第几行,a[i]表示第几列 bool judge(int r) { for(int i=1;i<r;i++) { if(a[r]==a[i]||abs(a[r]-a[i])==abs(i-r)) return 0; } return 1; } void hang(int r) { if(r>N) ans++; else { for(int i=1;i<=N;i++)//遍历第r行的所有列。 { a[r]=i; if(judge(r)) hang(r+1); } } } int main() { while(cin>>N&&N!=0) { ans=0; hang(1); cout<<ans<<endl; } return 0; }
i代表第几行,a[i]代表第几列,递推。
从第一行开始放,然后遍历每一列。同时还要检查一下之前的每行是否会和现在放的这个发生冲突。(不能在同一列,不能在对角线上)
这行的这列可以放,那么继续下一行。
注意这个问题用上述代码超时了,所以看一下范围,n小于等于10 ,所以采用打表的方式,算出来所有结果放在一个数组里面。
分类:
蓝桥杯备赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码