久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1776|回復: 3
打印 上一主題 下一主題
收起左側

如何利用51單片機8*8矩陣解決八皇后問題?

[復制鏈接]
跳轉到指定樓層
樓主
ID:427405 發表于 2019-2-20 21:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在網上看到了八皇后問題,用8*8應該這么做:
將八個點填入8x8的點陣中,要求每一行、每一列、每一條斜線(傾斜角度為45°或135°的方向)上最多只有一個點。將滿足條件的情況顯示在led點陣
其中,我利用C語言已經求出了92種情況,并可以用矩陣輸出
代碼如下
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 8

  4. int column[N+1];//同欄是否有皇后
  5. int rup[2*N +1];//右上至左下是否有皇后
  6. int lup[2*N +1];//左上至右下是否有皇后
  7. int queen[N+1] = {0};
  8. int num ;//解答編號

  9. void backtrack(int);//遞回求解

  10. main(void)
  11. {
  12.         int i;
  13.         num = 0;
  14.         for(i=1;i<=N;i++)
  15.                 column[i] = 1;

  16.         for(i=1;i<=2*N;i++)
  17.                 rup[i] = lup[i] = 1;

  18.         backtrack(1);

  19.         system("pause");
  20.         return 0;
  21. }

  22. void showAnswer()
  23. {
  24.         int x,y;
  25.         printf("\n 解答 %d\n",++num);
  26.         for (y=1;y<=N;y++)
  27.         {
  28.                 for (x=1;x<=N;x++)
  29.                 {
  30.                         if(queen[y] == x)
  31.                                 printf("1");
  32.                         else
  33.                                 printf("0");
  34.                 }
  35.                 printf("\n");
  36.         }
  37. }

  38. void backtrack(int i)
  39. {
  40.         int j;
  41.         if(i > N)
  42.                 showAnswer();
  43.         else
  44.                 for (j=1;j<=N;j++)
  45.                 {
  46.                         if(column[j] == 1 && rup[i+j] == 1 &&lup[i-j+N] == 1){
  47.                                 queen[i] = j;
  48.                                 //設定為占用
  49.                                 column[j] = rup[i+j] = lup[i-j+N] = 0;
  50.                                 backtrack(i+1);
  51.                                 column[j] = rup[i+j] = lup[i-j+N] = 1; //在左下角遞歸完后進行下一個位置的遞歸運算                                                                                       
  52.                         }
  53.                 }
  54. }
復制代碼


請問怎么用單片機來實現(我希望可以實現每種情況循環顯示)?希望各位能給個思路,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2019-2-21 10:38 | 只看該作者
樓主的八皇后游戲很古老,似乎趣味性不大。樓主想通過8x8的點陣LED顯示結果也不難,可以定義一個unsigned int 數組,把運算結果按序保存在數組中。再按序循環讀取數組的數據賦值于8x8點陣LED的驅動端口即可。
回復

使用道具 舉報

板凳
ID:303383 發表于 2019-2-21 12:08 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

地板
ID:164602 發表于 2019-2-21 14:21 | 只看該作者
才92種?非常非常多吧,N多年前,計算機奧賽小組的老師用老菜果機、匯編語言,算出了成千上萬種。那個老師把堆棧玩得非常好。當時如果用帶圖形(八個皇后圖形移動,看到一個個的結果)的BASIC語言算,要算幾天,匯編不帶圖形,要算一個多小時(機器歪)。關鍵在算法。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 三区在线| 中文字幕 在线观看 | 欧美日韩精品一区二区三区四区 | 国产成人av在线 | 欧美日韩亚洲国产综合 | 欧洲精品在线观看 | 亚洲免费人成在线视频观看 | 中文字幕一区二区三区四区五区 | 国产精品视频在线免费观看 | 天天影视网天天综合色在线播放 | 99re在线视频免费观看 | 国产91一区二区三区 | 免费成人高清在线视频 | 男女在线免费观看 | 一级片视频免费观看 | 91精品国产一区二区三区 | 超碰人人91 | 精品欧美一区二区三区久久久 | 日韩电影中文字幕 | www4虎| 国产精品成人一区二区三区 | 亚洲精品一区二区 | 一区二区av| 欧美精品网站 | 全免费a级毛片免费看视频免 | 欧美 日韩 国产 成人 | av网址在线 | 成人精品鲁一区一区二区 | 久久久久亚洲视频 | 亚洲人成在线播放 | 中文字幕欧美一区二区 | 国产精品视频一区二区三区四蜜臂 | 色伊人 | 亚洲一区二区三区免费 | 免费看大片bbbb欧美 | 国产午夜精品久久久 | 亚洲夜夜爽| 成人一级片在线观看 | 国产成人一区二区 | 成人字幕网zmw | 日韩视频在线免费观看 |