首页 > 代码库 > 八皇后 递归or迭代
八皇后 递归or迭代
递归:
#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;int que[8]={0},cc=0;void print(){ cc++; cout<<cc<<‘:‘; for(int i=0;i<=7;i++) cout<<que[i]<<‘ ‘; cout<<endl;}int check(int c){ if(que[c]>8)return 0; for(int i=0;i<c;i++) { if(que[i]==que[c]||que[i]-que[c]==i-c||que[i]-que[c]==c-i)return 0; } return 1;}void queue8(int i){ if(i==8){print();return;} for(int j=1;j<=8;j++) { que[i]=j; if(check(i))queue8(i+1); }}int main(){ queue8(0);}
迭代:
#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;int que[8]={0},c,count;void print(){ c++; cout<<c<<‘:‘; for(int i=0;i<=7;i++) cout<<que[i]<<‘ ‘; cout<<endl;}int check(int c){ if(que[c]>8)return 0; for(int i=0;i<c;i++) { if(que[i]==que[c]||que[i]-que[c]==i-c||que[i]-que[c]==c-i)return 0; } return 1;}void queue8(){ int cc=0; while(count>=0&&count<=7) { que[count]++; if(check(count)) { count++; } else if(que[count]>8)que[count]=0,count--; if(count>7){print();count--;} }}int main(){ queue8();}
八皇后 递归or迭代
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。