|
導讀微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一... 微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創(chuàng)新,經(jīng)過將近兩年的發(fā)展,已經(jīng)構造了新的小程序開發(fā)環(huán)境和開發(fā)者生態(tài)。 自己用Java寫了一個9x9數(shù)獨解題的小程序,用的是窮舉法,解一般的題目問題不大代碼如下: package Test;
public class SensibleGame {
/**
* @param args
*/
int[][] mainNumber;
boolean[][] flagNumber;
public SensibleGame(int[][] mainNumber)
{
this.mainNumber = mainNumber;
flagNumber = new boolean[9][9];
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(mainNumber[i][j] == 0)
{
flagNumber[i][j] = false;
}
else
{
flagNumber[i][j] = true;
}
}
}
}
public boolean CheckRow(int i, int j)//檢查(i,j)位置的行是否滿足數(shù)獨條件
{
// 代碼省略
}
public boolean CheckColumn(int i, int j)//檢查(i,j)位置的列是否滿足數(shù)獨條件
{
//代碼省略
}
public boolean CheckRound(int i, int j)//檢查(i,j)位置所在的3x3格是否滿足數(shù)獨條件
{
//代碼省略
}
public void run()//計算方法 窮舉填數(shù)過程
{
int i = 0;
int j = 0;
boolean previousFlag = false;
while(true)
{
if(i<0 || i>8 || j<0 || j>8)
{
System.out.print("下標越界!");
return;
}
if(previousFlag == false)
{
if(flagNumber[i][j] == true)
{
previousFlag = false;
if(i==8 && j==8)
{
System.out.print("計算結(jié)束\n");
break;
}
else if(i>=0&&i<8&&j==8)
{
i = i + 1;
j = 0;
continue;
}
else
{
j = j + 1;
continue;
}
}
boolean flag = false;
int k = 0;
while(!flag && k<9)
{
mainNumber[i][j] = ++k;
flag = CheckAll(i, j);
}
if(flag == true)
{
previousFlag = false;
if(i==8&&j==8)
{
System.out.println("計算結(jié)束\n");
}
else if(i>=0&&i<8&&j==8)
{
i = i + 1;
j = 0;
continue;
}
else
{
j = j + 1;
continue;
}
}
else
{
previousFlag = true;
mainNumber[i][j] = 0;
if(i==0&&j==0)
{
System.out.println("計算失敗\n");
}
else if(i>0&&i<9&&j==0)
{
i = i -1;
j = 8;
continue;
}
else
{
j = j - 1;
continue;
}
}
}
else
{
if(flagNumber[i][j] == true)
{
previousFlag = true;
if(i==0&&j==0)
{
System.out.println("計算失敗\n");
break;
}
else if(i>0&&i<9&&j==0)
{
i = i - 1;
j = 8;
continue;
}
else
{
j = j - 1;
continue;
}
}
boolean flag = false;
while(!flag && mainNumber[i][j]<9 && mainNumber[i][j]>0)
{
mainNumber[i][j] = mainNumber[i][j] + 1;
flag = CheckAll(i, j);
}
if(flag == true)
{
previousFlag = false;
if(i==8&&j==8)
{
System.out.println("計算結(jié)束\n");
break;
}
else if(i>=0&&i<8&&j==8)
{
i = i + 1;
j = 0;
continue;
}
else
{
j = j + 1;
continue;
}
}
else
{
previousFlag = true;
mainNumber[i][j] = 0;
if(i==0&&j==0)
{
System.out.println("計算失敗\n");
break;
}
else if(i>0&&i<9&&j==0)
{
i = i - 1;
j = 8;
continue;
}
else
{
j = j - 1;
continue;
}
}
}
}
}
public void Print()//打印
{
int k =0;
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
System.out.print(mainNumber[i][j]);
if((++k)%9 == 0)
{
System.out.println("");
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] mainNumber = {{0,9,0,0,1,0,0,2,0},
{7,0,0,0,0,8,3,0,0},
{0,0,0,0,0,0,4,0,0},
{8,3,0,0,0,0,0,1,0},
{0,0,6,0,0,0,0,0,5},
{0,4,0,7,0,0,0,0,0},
{0,0,0,0,0,7,8,9,0},
{0,2,1,0,0,0,0,0,0},
{3,0,0,0,5,0,0,0,6},
};
SensibleGame sensibleGame = new SensibleGame(mainNumber);
sensibleGame.run();
sensibleGame.Print();
}
}運行結(jié)果如下: 計算結(jié)束 以上就是數(shù)獨解題小程序?qū)崿F(xiàn)代碼的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章! 小程序是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。 |
溫馨提示:喜歡本站的話,請收藏一下本站!