第六屆藍橋杯校內選拔賽C C 高職組解題(7)

2021-06-27 08:35:58 字數 1796 閱讀 5387

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

如【圖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

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

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

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

**如下,比較完美的解決了

#include #include #include #include #include #include #include #include #include #include using namespace std;

int table[10][10];//儲存棋盤

mapline[10];//儲存每一行是否存在某個數字

mapcolumn[10];//儲存每一列是否存在某個數字

maplatex[10];//儲存某個九宮格是否存在某個數字

struct point

;vectorqueue;//儲存需要操作的節點位置

void dfs(int k)

//設定map 、 queue

for(int i=1;i<=9;i++)

else

}} dfs(0);

return 0;

}

第六屆藍橋杯校內選拔賽C C 高職組解題(2)

1 1 1 2 1 3 1 4 在數學上稱為調和級數。它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。但是,它發散的很慢 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?請填寫這個整數。注...

第六屆藍橋杯校內選拔賽C C 高職組解題(4)

1193是個素數,對它迴圈移位後發現 1931,9311,3119也都是素數,這樣特徵的數叫 迴圈素數。你能找出具有這樣特徵的5位數的迴圈素數嗎?當然,這樣的數字可能有很多,請寫出其中最大的乙個。注意 答案是個5位數,不要填寫任何多餘的內容。答案99371 include include inclu...

第六屆藍橋杯校內選拔賽C C 高職組解題(6)

形如 1 a 的分數稱為單位分數。可以把1分解為若干個互不相同的單位分數之和。例如 1 1 2 1 3 1 9 1 18 1 1 2 1 3 1 10 1 15 1 1 3 1 5 1 7 1 9 1 11 1 15 1 35 1 45 1 231 等等,類似這樣的分解無窮無盡。我們增加乙個約束條件...