你一定聽說過「數獨」遊戲

2021-09-29 19:20:26 字數 2736 閱讀 9177

第五屆校賽第6題

你一定聽說過「數獨」遊戲。

如【圖1.png】,玩家需要根據9×9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行、每一列、每乙個同色九宮內的數字均含1-9,不重複。

數獨的答案都是唯一的,所以,多個解也稱為無解。

本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的題目。但對會使用計算機程式設計的你來說,恐怕易如反掌了。

本題的要求就是輸入數獨題目,程式輸出數獨的唯一解。我們保證所有已知資料的格式都是合法的,並且題目有唯一的解。

格式要求,輸入9行,每行9個字元,0代表未知,其它數字為已知。

輸出9行,每行9個數字表示數獨的解。

例如:輸入(即圖中題目):

005300000

800000020

070010500

400005300

010070006

003200080

060500009

004000030

000009700

程式應該輸出:

145327698

839654127

672918543

496185372

218473956

753296481

367542819

984761235

521839764

再例如,輸入:

800000000

003600000

070090200

050007000

000045700

000100030

001000068

008500010

090000400

程式應該輸出:

812753649

943682175

675491283

154237896

369845721

287169534

521974368

438526917

796318452

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。

注意:主類的名字必須是:main,否則按無效**處理。

優化,當已經得到了正確答案時,就不進行回溯了,即在遞迴回溯時加判斷

**:

public

class

main6_bak

}//深搜

dfs(0,

0); system.out.

println

(count)

;//72097 14578

}private

static

boolean

dfs(

int i,

int j)

return

true;}

//如果該位置上已經有數字,則不需要填,繼續深度搜尋

if(map[i]

[j]!=0)

else

}//遍歷1-9的數字,尋找符合要求的數字填入

for(

int k =

1; k <=

9; k++)}

else;}

//回溯

map[i]

[j]=0;

}}return

false;}

private

static

boolean

check

(int i,

int j,

int k)

}//一列

for(

int x =

0; x <

9; x++)}

//同色矩陣

int row1 =

0, row2 =

0, col1 =

0, col2 =0;

if(i <

3&& j <3)

else

if(i <

3&& j >=

3&& j <6)

else

if(i <

3&& j >=

6&& j <9)

else

if(i >=

3&& i <

6&& j <3)

else

if(i >=

3&& i <

6&& j >=

3&& j <6)

else

if(i >=

3&& i <

6&& j >=

6&& j <9)

else

if(i >=

6&& i <

9&& j <3)

else

if(i >=

6&& i <

9&& j >=

3&& j <6)

else

for(

int x = row1; x < row2; x++)}

}return

true;}

}

你自己覺得行,你就一定行

今天在惠州市財政局三樓召開了 惠州市維穩綜治資訊管理系統培訓班 參加培訓的有市委政法委 市直單位 包括公安局 信訪局 司法局和勞動保障局 及各縣 區的領導和相關的基層工作人員,參加人數共一百二十人左右。很榮幸我可以參與並擔任講師這一角色,會議的議程是這樣的 1 領導講話 2 vpn的安裝講解 3 惠...

你一定很好奇! RPA是什麼

rpa robotic process automation 機械人流程自動化 可以看出rpa是由這三個單詞簡化而來的,那麼首先第一步,我們不妨從這裡開始。術語有有三個 機械人,過程和自動化。讓我逐一向您解釋這些術語。機械人 模仿人類行為的實體稱為機械人。流程 由機械人完成的任何過程,無需人為干預。...

你以為的不是一定就是你以為的

我總樂觀的以為,只要a,就會b。反過來講,這件敘述的事,如果我認為它可以完成,但是我無法證明它可以完成,難道就完成不了了嗎?如果a存在,我們就應該找到證據,當我們找不到證據的時候,就都會認為a不存在。這個爭論在無神論,還有很多超自然神話中都有這樣的爭論。我在上家公司,產品總監要求在某個過程中,加個 ...