藍橋杯 真題演練 數獨遊戲(C dfs暴搜)

2021-10-24 18:46:39 字數 2181 閱讀 4335

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

如:

玩家需要根據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 , 不能通過工程設定而省略常用標頭檔案。

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

dfs暴搜,每填乙個數字就判斷一遍橫行、縱行、九宮格。

#include

using

namespace std;

int dataa[15]

[15];

intjudge

(int x,

int y,

int z)

//判斷是否有重複的z

for(

int j =

1; j <

10; j++

)int tempx =

(x -1)

/3, tempy =

(y -1)

/3;for

(int j =

1; j <=

3; j++

)return1;

}void

print()

}void

dfs(

int x,

int y)

if(dataa[x]

[y]==0)

} dataa[x]

[y]=0;

}else

dfs(

(x +

(y +1)

/10),

(y +1)

>9?

1:(y +1)

);}int

main()

dfs(1,

1);return0;

}

藍橋杯 真題演練 路徑計數(C dfs)

從乙個 5x5 的方格矩陣的左上角出發,沿著方格的邊走,滿足以下條件的 路線有多少種?總長度不超過 12 最後回到左上角 路線不自交 不走出 5x5 的方格矩陣範圍之外。如下圖所示,abc 是三種合法的路線。注意 b 和 c 由於方向不同,所以 視為不同的路線。因為一次只走一格,因此只要不走重複的點...

藍橋杯真題 冰雹數

任意給定乙個正整數n,如果是偶數,執行 n 2 如果是奇數,執行 n 3 1 生成的新的數字再執行同樣的動作,迴圈往復。通過觀察發現,這個數字會一會兒上公升到很高,一會兒又降落下來。就這樣起起落落的,但最終必會落到 1 這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。比如n 9 9,28,14,7,22...

2023年藍橋杯 數獨遊戲

你一定聽說過 數獨 遊戲。如圖,玩家需要根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個同色九宮內的數字均含1 9,不重複。數獨的答案 本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的題目。但對會使用計算機程式設計的你來說,恐怕易如反掌了。本題的要求就是輸...