亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java版數獨游戲核心算法(一)

2024-07-13 10:14:52
字體:
來源:轉載
供稿:網友

之前學習javascript時用javascript寫過一個數獨游戲,最近看了一點java的內容,于是就心血來潮想搞一個java版的數獨游戲。

現在將全部代碼分享出來和大家學習交流,當然代碼中有著各種各樣的問題和不足之處,望各位朋友批評指點。

以下是生成數獨地圖的核心算法,算法不是很好,也是之前參考過網上的一些思想:

package hlc.shudu.src;/* * 數獨的幫助類,里面提供數據所需的所有算法 */public class ShuduHelper { //數獨地圖數組 private static int[][] maps = new int[9][9]; //每個小九宮格可放置位置的數 private static int[] canPutSum = new int[9]; //用來存儲之前放置過的位置 static int[] used = new int[9]; //是否已經完成地圖的生成 static boolean isOk = true; /*  * 得到數獨地圖數組  */ public static int[][] getMap() { //判斷是否已經完成地圖的生成,要是沒有完成就重新生成。 //從這里就可以看出算法還有待優化,如果回溯的好的話就一直可以通過回溯來重新生成,而這里是通過重新執行生成算法來重新生成。希望感興趣的朋友可以去實現以下。  do{   isOk = true;   initMaps();  }while(!isOk);  return maps; } /*  * 初始化maps  */ private static void initMaps() {  // 初始化地圖數組中沒有填入任何數字  for (int i = 0; i < 9; i++) {   for (int j = 0; j < 9; j++) {    maps[i][j] = -1;   }  }  // 依次填入1~9  for (int num = 1; num <= 9; num++) {   for (int i = 0; i < 9; i++) {    used[i] = -1;    canPutSum[i] = -1;   }   // 遍歷大九宮格中的每個小九宮格   for (int i = 0; i < 9; i++) {    if (canPutSum[i]==-1) {     canPutSum[i] = getCanPutSum(i, num);    }    if (canPutSum[i]==1) {     used[i] = -1;    }    if (canPutSum[i] == 0) {     canPutSum[i] = -1;     used[i] = -1;     // 如果當前小九宮格中不能放入數字num,則回到前一個小九宮格     if (i > 0) {      // 將前一個九宮格中放num的位置清空      if (used[i-1]!=-1) {       //maps[(int) (Math.floor(used[i-1]/3)+Math.floor((i-1)/3)*3)][used[i-1]%3+((i-1)%3)*3]=-1;       clearNum(i - 1, num);      }      // i回退一個,因為等會for循環灰給i加一,所以這里減2      i -= 2;      continue;     } else {      isOk = false;      return;     }    } else {     // 將num放入當前小九宮格中     boolean flag = false;     while (!flag) {      int j = (int) (Math.random() * 9);      // 當前小方格橫坐標      int ii = (i / 3) * 3 + j / 3;      // 當前小方格縱坐標      int jj = (i % 3) * 3 + j % 3;      //System.out.println("num:"+num+"/tii:"+ii+"/tjj:"+jj);      // 如果可以放置num則放置      if (maps[ii][jj] == -1 && j!=used[i] && isCanPut(ii, jj, num)) {       maps[ii][jj] = num;       used[i] = j;       canPutSum[i] -= 1;       flag = true;      }     }    }   }  } } /*  * 清空第i個小九宮格中的num  */ private static void clearNum(int i, int num) {  for (int j = 0; j < 9; j++) {   // 當前小方格橫坐標   int ii = (i / 3) * 3 + j / 3;   // 當前小方格縱坐標   int jj = (i % 3) * 3 + j % 3;   // 判斷當前小方格是否可以放置   if (maps[ii][jj] == num) {    maps[ii][jj] = -1;   }  } } /*  * 得到當前小九宮格可以放入數字num的位置數目  */ private static int getCanPutSum(int i, int num) {  int sum = 0;  // 遍歷小九宮格  for (int j = 0; j < 9; j++) {   // 當前小方格橫坐標   int ii = (i / 3) * 3 + j / 3;   // 當前小方格縱坐標   int jj = i % 3 * 3 + j % 3;   // 判斷當前小方格是否可以放置   if (maps[ii][jj] == -1 && isCanPut(ii, jj, num)) {    ++sum;   }  }  return sum; } /*  * 指定橫縱坐標點是否可以放置num  */ private static boolean isCanPut(int ii, int jj, int num) {  // 判斷指定坐標點的同行或同列是否有相同數字,要是有則為false  for (int i = 0; i < 9; i++) {   if (maps[ii][i] == num) {    return false;   }   if (maps[i][jj] == num) {    return false;   }  }  return true; }}

完整程序包可在GitHub上下載:https://github.com/houlongchao/s

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线看视频国产欧美| 亚洲区bt下载| 色婷婷久久一区二区| 国产成人一区二区三区| 精品视频在线播放| 深夜精品寂寞黄网站在线观看| 懂色aⅴ精品一区二区三区蜜月| 欧美日韩亚洲一区二区三区| 伊人亚洲福利一区二区三区| 久久精品视频在线| 最近2019年手机中文字幕| 欧美精品生活片| 午夜精品久久久久久久99热浪潮| 欧美午夜www高清视频| 午夜精品一区二区三区在线| 色多多国产成人永久免费网站| 欧美激情精品久久久久久| 亚洲欧美在线播放| 亚洲网在线观看| 欧美乱大交做爰xxxⅹ性3| 45www国产精品网站| 久久久久女教师免费一区| 麻豆国产精品va在线观看不卡| 亚洲性夜色噜噜噜7777| 一区二区三区国产在线观看| 欧美亚洲国产视频小说| 国产精品一区二区三区毛片淫片| 欧美高清在线观看| 国产91免费看片| 欧美最顶级丰满的aⅴ艳星| 57pao国产精品一区| 国内精品久久久久影院优| 欧美成人精品在线| 亚洲电影在线看| 国产精品你懂得| 精品国产乱码久久久久久虫虫漫画| 亚洲免费影视第一页| xxav国产精品美女主播| 亚洲国产成人在线视频| 久久久亚洲欧洲日产国码aⅴ| 久久全国免费视频| 成人写真福利网| 97精品久久久| 久久精品亚洲国产| 欧美午夜激情视频| 欧美剧在线观看| 欧美日韩国产一区中文午夜| 成人激情视频免费在线| 国产一区二区三区在线观看视频| 91免费精品国偷自产在线| 欧美在线观看网址综合| 91国产中文字幕| 亚洲免费福利视频| 亚洲高清久久网| 久久久99免费视频| 亚洲免费影视第一页| 精品成人在线视频| 国产第一区电影| 国产精品igao视频| 亚洲人成电影网站| 国产精品免费久久久久影院| 欧美激情在线有限公司| 神马久久久久久| 不卡av在线播放| 久久久日本电影| 欧美巨大黑人极品精男| 国产a∨精品一区二区三区不卡| 欧美一级成年大片在线观看| 国产精品第一区| 欧美激情精品久久久久| 91高潮在线观看| 久久久999国产精品| 欧美精品videossex性护士| 爽爽爽爽爽爽爽成人免费观看| 亚洲成人在线网| 国产精品欧美风情| 国产精品扒开腿做爽爽爽的视频| 午夜精品一区二区三区在线视频| 亚洲女成人图区| 日韩激情av在线免费观看| 午夜欧美不卡精品aaaaa| 亚洲成色999久久网站| 在线播放国产一区中文字幕剧情欧美| 亚洲欧美激情另类校园| 亚洲美女av黄| 亚洲欧美激情视频| 国产精品视频精品视频| 国产精品青青在线观看爽香蕉| 97国产精品免费视频| 国产精品成人免费电影| 啪一啪鲁一鲁2019在线视频| 久久久亚洲国产天美传媒修理工| 日韩欧美黄色动漫| 91丝袜美腿美女视频网站| 午夜伦理精品一区| 日韩国产欧美精品在线| 尤物yw午夜国产精品视频明星| 久久久久久国产三级电影| 国产v综合ⅴ日韩v欧美大片| 亚洲国产成人精品久久久国产成人一区| 国产精品99一区| 韩国精品久久久999| 亚洲男人的天堂在线播放| 91美女高潮出水| 亚洲欧美日韩国产成人| 在线精品高清中文字幕| 福利视频一区二区| 国产精品第一页在线| 日韩免费观看在线观看| 丁香五六月婷婷久久激情| 欧美国产日韩在线| 亚洲网址你懂得| 国产精选久久久久久| 日韩成人在线电影网| 欧美激情欧美激情在线五月| 一区二区三区视频免费在线观看| 国产欧美亚洲视频| 国产成人极品视频| 国产欧美精品va在线观看| 国产一区二区三区丝袜| 国产亚洲精品一区二555| 精品国产91久久久久久| 久久久成人精品视频| 欧美猛男性生活免费| 欧美日韩国产第一页| 亚洲女人天堂视频| 色诱女教师一区二区三区| 国产精品久久久久久久久粉嫩av| 亚洲精品中文字| 国产精品 欧美在线| 亚洲精品99999| 日韩欧美极品在线观看| 日韩视频欧美视频| 色综合色综合久久综合频道88| 欧美性生交xxxxx久久久| 在线精品视频视频中文字幕| 久久久国产精品x99av| 亚洲网站在线看| 中文字幕亚洲情99在线| 在线看欧美日韩| 久久国产精品偷| 97视频国产在线| 亚洲欧美精品在线| 亚洲福利视频专区| 午夜精品免费视频| 国产精品成人国产乱一区| 日韩久久免费电影| 久久视频精品在线| 久久久久久久网站| 久久中国妇女中文字幕| 国产精品av在线| 亚洲深夜福利视频| 久久这里有精品| 亚洲成人动漫在线播放| 亚洲综合社区网| 成人精品久久一区二区三区| 最近2019好看的中文字幕免费| 欧美一区三区三区高中清蜜桃| 欧美午夜电影在线| 国产精品久久久久久久9999| 青草热久免费精品视频| 亚洲人精品午夜在线观看| 亚洲一区www| 97香蕉久久超级碰碰高清版|