導航:首頁 > 編程語言 > java數獨演算法

java數獨演算法

發布時間:2024-11-15 18:43:06

❶ 給推薦三個適合女孩玩的java游戲,不要打打殺殺的,要求是像「都市摩天樓、bounce tales"

看你的游戲興趣應該是喜歡那種休閑類游戲了,推薦幾個供參考。

益智類:巫婆魔法氣泡 ,大富豪物語之奶油獅童話歷險 ,童話小富婆,牛人社之南瓜纜車大作戰 。

養成類:貓耳娘夢工廠,時尚24小時之花樣少女,狗狗口袋屋。

經營類:萌系女僕8.5度c ,田園物語,美女菠蘿包,開心餐城。開心花園。牧場物語2之戀愛季節。

戀愛類:戀愛物語之湛藍回憶 ,花樣少年戀愛學院,戀色狂想-魔女戀歌,貓戀物語之約定的彼方。
換裝類:名模時裝周,百變甜心女孩。

❷ Java數獨游戲代碼

public class ShuDu {
/**存儲數字的數組*/
static int[][] n = new int[9][9];
/**生成隨機數字的源數組,隨機數字從該數組中產生*/
static int[] num = {1,2,3,4,5,6,7,8,9};
public static void main(String[] args) {
//生成數字
for(int i = 0;i < 9;i++){
//嘗試填充的數字次數
int time = 0;
//填充數字
for(int j = 0;j < 9;j++){
//產生數字
n[i][j] = generateNum(time);
//如果返回值為0,則代表卡住,退回處理
//退回處理的原則是:如果不是第一列,則先倒退到前一列,否則倒退到前一行的最後一列
if(n[i][j] == 0){
//不是第一列,則倒退一列
if(j > 0){
j-=2;
continue;
}else{//是第一列,則倒退到上一行的最後一列
i--;
j = 8;
continue;
}
}
//填充成功
if(isCorret(i,j)){
//初始化time,為下一次填充做准備
time = 0;
}else{ //繼續填充
//次數增加1
time++;
//繼續填充當前格
j--;
}
}
}
//輸出結果
for(int i = 0;i < 9;i++){
for(int j = 0;j < 9;j++){
System.out.print(n[i][j] + " ");
}
System.out.println();
}
}

/**
* 是否滿足行、列和3X3區域不重復的要求
* @param row 行號
* @param col 列號
* @return true代表符合要求
*/
public static boolean isCorret(int row,int col){
return (checkRow(row) & checkLine(col) & checkNine(row,col));
}

/**
* 檢查行是否符合要求
* @param row 檢查的行號
* @return true代表符合要求
*/
public static boolean checkRow(int row){
for(int j = 0;j < 8;j++){
if(n[row][j] == 0){
continue;
}
for(int k =j + 1;k< 9;k++){
if(n[row][j] == n[row][k]){
return false;
}
}
}
return true;
}

/**
* 檢查列是否符合要求
* @param col 檢查的列號
* @return true代表符合要求
*/
public static boolean checkLine(int col){
for(int j = 0;j < 8;j++){
if(n[j][col] == 0){
continue;
}
for(int k =j + 1;k< 9;k++){
if(n[j][col] == n[k][col]){
return false;
}
}
}
return true;
}

/**
* 檢查3X3區域是否符合要求
* @param row 檢查的行號
* @param col 檢查的列號
* @return true代表符合要求
*/
public static boolean checkNine(int row,int col){
//獲得左上角的坐標
int j = row / 3 * 3;
int k = col /3 * 3;
//循環比較
for(int i = 0;i < 8;i++){
if(n[j + i/3][k + i % 3] == 0){
continue;
}
for(int m = i+ 1;m < 9;m++){
if(n[j + i/3][k + i % 3] == n[j + m/3][k + m % 3]){
return false;
}
}
}
return true;
}

/**
* 產生1-9之間的隨機數字
* 規則:生成的隨機數字放置在數組8-time下標的位置,隨著time的增加,已經嘗試過的數字將不會在取到
* 說明:即第一次次是從所有數字中隨機,第二次時從前八個數字中隨機,依次類推,
* 這樣既保證隨機,也不會再重復取已經不符合要求的數字,提高程序的效率
* 這個規則是本演算法的核心
* @param time 填充的次數,0代表第一次填充
* @return
*/
public static int generateNum(int time){
//第一次嘗試時,初始化隨機數字源數組
if(time == 0){
for(int i = 0;i < 9;i++){
num[i] = i + 1;
}
}
//第10次填充,表明該位置已經卡住,則返回0,由主程序處理退回
if(time == 9){
return 0;
}
//不是第一次填充
//生成隨機數字,該數字是數組的下標,取數組num中該下標對應的數字為隨機數字
int ranNum = (int)(Math.random() * (9 - time));
//把數字放置在數組倒數第time個位置,
int temp = num[8 - time];
num[8 - time] = num[ranNum];
num[ranNum] = temp;
//返回數字
return num[8 - time];
}
}

❸ 九游下了個數獨達人 java游戲怎麼玩呀游戲收費嗎

九游9game。Çn里的單機游戲都是完全破解的,不收費的,下載了游戲注意看下游戲說明,把以9*9形式構成的81個填滿是本游戲的目的.同時每一行,每一列和3*3小方格格內不能重復,切必須出現一次1~9數字.

❹ 用java做一個數獨游戲,有現成代碼,只需弄一下文字的東西就可以啦,不用太復雜,普普通通的就行.

public class ShuDu {
/**存儲數字的數組*/
static int[][] n = new int[9][9];
/**生成隨機數字的源數組,隨機數字從該數組中產生*/
static int[] num = {1,2,3,4,5,6,7,8,9};
public static void main(String[] args) {
//生成數字
for(int i = 0;i < 9;i++){
//嘗試填充的數字次數
int time = 0;
//填充數字
for(int j = 0;j < 9;j++){
//產生數字
n[i][j] = generateNum(time);
//如果返回值為0,則代表卡住,退回處理
//退回處理的原則是:如果不是第一列,則先倒退到前一列,否則倒退到前一行的最後一列
if(n[i][j] == 0){
//不是第一列,則倒退一列
if(j > 0){
j-=2;
continue;
}else{//是第一列,則倒退到上一行的最後一列
i--;
j = 8;
continue;
}
}
//填充成功
if(isCorret(i,j)){
//初始化time,為下一次填充做准備
time = 0;
}else{ //繼續填充
//次數增加1
time++;
//繼續填充當前格
j--;
}
}
}
//輸出結果
for(int i = 0;i < 9;i++){
for(int j = 0;j < 9;j++){
System.out.print(n[i][j] + " ");
}
System.out.println();
}
}

/**
* 是否滿足行、列和3X3區域不重復的要求
* @param row 行號
* @param col 列號
* @return true代表符合要求
*/
public static boolean isCorret(int row,int col){
return (checkRow(row) & checkLine(col) & checkNine(row,col));
}

/**
* 檢查行是否符合要求
* @param row 檢查的行號
* @return true代表符合要求
*/
public static boolean checkRow(int row){
for(int j = 0;j < 8;j++){
if(n[row][j] == 0){
continue;
}
for(int k =j + 1;k< 9;k++){
if(n[row][j] == n[row][k]){
return false;
}
}
}
return true;
}

/**
* 檢查列是否符合要求
* @param col 檢查的列號
* @return true代表符合要求
*/
public static boolean checkLine(int col){
for(int j = 0;j < 8;j++){
if(n[j][col] == 0){
continue;
}
for(int k =j + 1;k< 9;k++){
if(n[j][col] == n[k][col]){
return false;
}
}
}
return true;
}

/**
* 檢查3X3區域是否符合要求
* @param row 檢查的行號
* @param col 檢查的列號
* @return true代表符合要求
*/
public static boolean checkNine(int row,int col){
//獲得左上角的坐標
int j = row / 3 * 3;
int k = col /3 * 3;
//循環比較
for(int i = 0;i < 8;i++){
if(n[j + i/3][k + i % 3] == 0){
continue;
}
for(int m = i+ 1;m < 9;m++){
if(n[j + i/3][k + i % 3] == n[j + m/3][k + m % 3]){
return false;
}
}
}
return true;
}

/**
* 產生1-9之間的隨機數字
* 規則:生成的隨機數字放置在數組8-time下標的位置,隨著time的增加,已經嘗試過的數字將不會在取到
* 說明:即第一次次是從所有數字中隨機,第二次時從前八個數字中隨機,依次類推,
* 這樣既保證隨機,也不會再重復取已經不符合要求的數字,提高程序的效率
* 這個規則是本演算法的核心
* @param time 填充的次數,0代表第一次填充
* @return
*/
public static int generateNum(int time){
//第一次嘗試時,初始化隨機數字源數組
if(time == 0){
for(int i = 0;i < 9;i++){
num[i] = i + 1;
}
}
//第10次填充,表明該位置已經卡住,則返回0,由主程序處理退回
if(time == 9){
return 0;
}
//不是第一次填充
//生成隨機數字,該數字是數組的下標,取數組num中該下標對應的數字為隨機數字
int ranNum = (int)(Math.random() * (9 - time));
//把數字放置在數組倒數第time個位置,
int temp = num[8 - time];
num[8 - time] = num[ranNum];
num[ranNum] = temp;
//返回數字
return num[8 - time];
}
}

在網上找的

❺ 哪位大師能告訴我我編的 java 數獨解算程序 哪裡有錯誤啊謝謝!

沒看懂你的 考下來還要報錯 我自己寫了一個生成數獨的方法 表示可以用
public class ShuDu {
/** 存儲數字的數組 */
static int[][] n = new int[9][9];
/** 生成隨機數字的源數組,隨機數字從該數組中產生 */
static int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

public static void main(String[] args) {
// 生成數字
for (int i = 0; i < 9; i++) {
int time = 0; // 嘗試填充的數字次數
// 填充數字
for (int j = 0; j < 9; j++) {
// 產生數字
n[i][j] = generateNum(time);
// 如果返回值為0,則代表卡住,退回處理

// 退回處理的原則是:如果不是第一列,則先倒退到前一列,否則倒退到前一行的最後一列
if (n[i][j] == 0) {
if (j > 0) { // 不是第一列,則倒退一列
j -= 2;
continue;
} else {// 是第一列,則倒退到上一行的最後一列
i--;
j = 8;
continue;
}
}
if (isCorret(i, j)) {
// 填充成功
time = 0;// 初始化time,為下一次填充做准備
} else { // 繼續填充
time++;// 次數增加1
// 繼續填充當前格
j--;
}
}
} // 輸出結果
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(n[i][j] + " ");
}
System.out.println();
}
}

/**
* * 是否滿足行、列和3X3區域不重復的要求 * @param row 行號 * @param col 列號 *
*
* @return true代表符合要求
*/
public static boolean isCorret(int row, int col) {
return (checkRow(row) & checkLine(col) & checkNine(row, col));
}

/**
* * 檢查行是否符合要求 *
*
* @param row
* 檢查的行號 *
* @return true代表符合要求
*/
public static boolean checkRow(int row) {
for (int j = 0; j < 8; j++) {
if (n[row][j] == 0) {
continue;
}
for (int k = j + 1; k < 9; k++) {
if (n[row][j] == n[row][k]) {
return false;
}
}
}
return true;
}

/**
* * 檢查列是否符合要求 * @param col 檢查的列號 * @return true代表符合要求
*/
public static boolean checkLine(int col) {
for (int j = 0; j < 8; j++) {
if (n[j][col] == 0) {
continue;
}
for (int k = j + 1; k < 9; k++) {
if (n[j][col] == n[k][col]) {
return false;
}
}
}
return true;
}

/**
* 檢查3X3區域是否符合要求 *
* @param row 檢查的行號 *
* @param col 檢查的列號 *
* @return true代表符合要求
*/
public static boolean checkNine(int row, int col) {
// 獲得左上角的坐標
int j = row / 3 * 3;
int k = col / 3 * 3;
// 循環比較
for (int i = 0; i < 8; i++) {
if (n[j + i / 3][k + i % 3] == 0) {
continue;
}
for (int m = i + 1; m < 9; m++) {
if (n[j + i / 3][k + i % 3] == n[j + m / 3][k + m % 3]) {
return false;
}
}
}
return true;
}

/**
* 產生1-9之間的隨機數字 *
* 規則:生成的隨機數字放置在數組8-time下標的位置,隨著time的增加,已經嘗試過的數字將不會在取到 *
* 說明:即第一次次是從所有數字中隨機,第二次時從前八個數字中隨機,依次類推,*
* 這樣既保證隨機,也不會再重復取已經不符合要求的數字,提高程序的效率*
* * 這個規則是本演算法的核心 *
* @param time 填充的次數,0代表第一次填充 *
* @return
*/
public static int generateNum(int time) {
// 第一次嘗試時,初始化隨機數字源數組
if (time == 0) {
for (int i = 0; i < 9; i++) {
num[i] = i + 1;
}
}
// 第10次填充,表明該位置已經卡住,則返回0,由主程序處理退回
if (time == 9) {
return 0;
}
// 不是第一次填充
// 生成隨機數字,該數字是數組的下標,取數組num中該下標對應的數字為隨機數字
int ranNum = (int) (Math.random() * (9 - time));
// 把數字放置在數組倒數第time個位置,
int temp = num[8 - time];
num[8 - time] = num[ranNum];
num[ranNum] = temp; // 返回數字
return num[8 - time];

}

閱讀全文

與java數獨演算法相關的資料

熱點內容
根伺服器怎麼連接的 瀏覽:243
php是否圖片url 瀏覽:557
vps綁定域名linux 瀏覽:338
android開發一年經驗 瀏覽:523
什麼叫做解壓到根目錄下 瀏覽:503
prom文件夾 瀏覽:728
不規則土方的演算法 瀏覽:211
tor加密貨幣網站 瀏覽:451
linux轉ansi 瀏覽:738
網站源碼怎麼查 瀏覽:689
高cpu雲伺服器 瀏覽:367
androidwebrtcaecm 瀏覽:983
阿里雲部署java 瀏覽:638
雲是不是就是個大的伺服器 瀏覽:583
如何建立linux日誌管理伺服器 瀏覽:772
悟空頭圖標是什麼APP 瀏覽:555
linuxandroid虛擬機 瀏覽:281
ps李濤pdf 瀏覽:638
linuxfork線程 瀏覽:97
易語言編譯改名 瀏覽:723