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

马鞍山建站金融网站建设成功案例

马鞍山建站,金融网站建设成功案例,企业模板,鞍山网络顾问有限公司#includeiostream using namespace std; #define N 8 //N代表皇后数 void queen() { int Count0; //计算总共的解的数量 int column[N1]; //column[m]n表示第m行#xff0c;第n行放置了皇后,这里下表并从0开始 int row[N1]; //row[m]1表示第m行没有皇后#xff0c;0表… #includeiostream using namespace std; #define N 8 //N代表皇后数 void queen() { int Count0; //计算总共的解的数量 int column[N1]; //column[m]n表示第m行第n行放置了皇后,这里下表并从0开始 int row[N1]; //row[m]1表示第m行没有皇后0表示有皇后 int b[2*N1]; //b[m]1表示第m条主对角线没有皇后 int c[2*N1]; //c[m]1表示第m条次对角线没有皇后0表示有皇后 int numQueen1; //计数已经放置的皇后数目当numQueenN时候则表示已经完成探测 int good1; //good1表示没有发生冲突,good0表示发生冲突 //初始化这些标记 for(int j0;jN1;j) { row[j]1; } for(int j0;j2*N1;j) { b[j]c[j]1; } column[1]1; column[0]0; //初始化第一行第一列第二行第二列放置皇后 do { //没有发生冲突则继续向下探测增加皇后或者判断当前是否是解 if(good) { //当前皇后数是解打印继续向下探测 if(numQueenN) { Count; cout找到解endl; for(int j1;jN1;j) { coutj列column[j]行endl; } //最后一个棋子向下移动,移动到本列最后一个 while(column[numQueen]N) { numQueen--; //皇后数减1即列数减1回溯 //回溯后将该列以及该列最后一行状态位修改 //第numQueen列column[numQueen]行处状态位置修改 row[column[numQueen]]1; b[numQueencolumn[numQueen]]1; c[NnumQueen-column[numQueen]]1; } column[numQueen]; //回溯至上一行向上一行的下一列继续探测 } //当前不是解那么继续向下探测 else { //改变该位置对应标志 row[column[numQueen]]0; b[numQueencolumn[numQueen]]0; c[NnumQueen-column[numQueen]]0; //本次位置没有发生冲突也不是正确解那么就应该向下探测下一列的第一行 column[numQueen]1; } } //如果当前发生了冲突就在本列继续向下如果到了本列最后一行则回溯到上一列 else { while(column[numQueen]N) //到了本列最后一行还是冲突那么回溯到上一列 { numQueen--; row[column[numQueen]]1; b[numQueencolumn[numQueen]]1; c[NnumQueen-column[numQueen]]1; } column[numQueen]; //发生冲突了又没有到本列的最后一行那么在本列继续向下一行探测 } //检测放置了这个位置后是否冲突 goodrow[column[numQueen]]b[numQueencolumn[numQueen]]c[NnumQueen-column[numQueen]]; }while(numQueen); coutN皇后总共找到解Count个endl; } void main() { queen(); system(pause); } 这种非递归方法还是比较容易理解的   另外还有递归方法先来看一下递归算法的伪代码 void trial(int row) {      //递归时候我们从第0行开始然后每次递归时候都向下一行一直到棋盘的最后一行      //这时候就表示已经是正确的解了所有进入该函数首先判断是否是正确的解      if(rowN)     {          //输出此时的棋盘     }     else     {         for(int i0;iN;i)         {               //不是解这时候需要在本行的每一列开始试探放旗子如果可以的话继续向下递归              #修改记录冲突的数组               if(放在这个位置不会冲突)              {                      trial(row1);              }              放在这里冲突那么修改回记录的数组继续下一列         }      } }   下面给出递归的 void EightQueen (int row) { if(rowN) { PrintMap(); //打印棋盘 } else { int column; for (column 0; column N; column) { A[row] column; //代表第row行的第column列放皇后 if (IsCorrect (row, column)) //判断在第row行的第column列放皇后是否可行 { EightQueen (row 1); } //将标记数组修改回原来 } } } 查看源代码示例 查看源代码示例 转载于:https://blog.51cto.com/seanyxie/1375902
http://www.zqtcl.cn/news/292787/

相关文章:

  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图
  • wordpress攻防优化方案
  • 义乌市建设银行分行网站宜春静态管理
  • 企业网站优化电话17做网店类似网站
  • 南京网站建设黄页网站大全在线看免费
  • 网站开发过程记录定制西服
  • 长沙有哪些网站建设公司用vue做网站的实例
  • 购物网站模板 php网页设计图片剧中
  • 嘉峪关市建设局网站横沥镇网站建设公司
  • 查找网站软件培训记录
  • 注册网站安全吗制作人漫画
  • jeecms 怎么建设网站嵌入式软件开发兼职
  • 百度怎么自己做网站四川省建设工程交易中心网站
  • 中介如何做网站收客wordpress 运行代码
  • 网页设计与网站建设考试题目如何做建议的网站
  • 网站怎么推广软文政务网站建设存在问题
  • 公司官方网站建设需要多少钱wordpress单页面制作
  • 社群网站建设网站推广的方式有哪几种
  • 培训机构活动策划网站wordpress 改端口
  • 北京网站制作与营销培训用asp做网站视频
  • 江苏丹阳建设公司网站做网站中的剪辑图片
  • 纯静态网站怎样广州工程造价信息网
  • 为什么网页不能打开建设银行网站企业网站开发综合实训
  • 企业网站制作 深圳网站建站行业公司主页建设
  • 外汇直播网站建设开发做网站空间商需要办什么手续
  • 源码哥网站的模板皮肤病在线咨询医生免费咨询
  • 温岭市市住房和城乡建设规划局网站附近的电脑培训班在哪里
  • 网站备案百度站长提交减肥网站源码