藍橋杯 方格填數(遞迴)

2021-10-23 20:15:36 字數 641 閱讀 1982

題目

如下的10個格仔

填入0~9的數字。要求:連續的兩個數字不能相鄰。

(左右、上下、對角都算相鄰)

一共有多少種可能的填數方案?

請填寫表示方案數目的整數。

解題思路

全排列解決問題。可以用c++的next_permutation,也可以自己用遞迴寫乙個全排列。

**解惑

可通過c++的next_permutation函式快速完成全排列。

可以如下**實現:

#include#includeusing namespace std;

int a = ;

int ans = 0;

bool check(int a)

void f(int n)

} for(int i=n;i<10;i++)

f(n+1);

}}int main(){

f(0);

cout還有一種方法,遞迴處理每乙個格仔,使用過了的數字放到乙個陣列,以保證每次拿到的數是唯一的,再結合自定義的check函式,即可解決問題。

藍橋杯 方格填數

方格填數 如下的10個格仔 如果顯示有問題,也可以參看 圖1.jpg 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。include include in...

方格填數 藍橋杯

如下的10個格仔 如果顯示有問題,也可以參看 圖1.jpg 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。解 可以直接用全排列的方法解決,但是用dfs ...

藍橋杯 方格填數

方格填數 如下的10個格仔 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?答案 解題思路 題目應該是要求0 9是不重複的。那麼我想通過a 10 將0 9進行全排列,然後將值賦給二維陣列m 3 4 從而m記錄每個方格的數字。我只要寫判斷語句就行了...