方格填數 DFS解決

2021-10-03 20:16:54 字數 1283 閱讀 1968

在2行5列的格仔中填入1到10的數字。

要求:相鄰的格仔中的數,右邊的大於左邊的,下邊的大於上邊的。

如下圖所示的2種,就是合格的填法。

請你計算一共有多少種可能的方案。

注:本題來自藍橋杯2023年決賽,方格填數,為填空題。

從題目,我們可以得到,這些填入的數字應該滿足以下條件:

右邊的數比左邊大。

下面的數比上面的數大。 

第乙個格仔一定是1,最後乙個各自一定是10,其餘每個各自都必須在一定的範圍內。

數字不能重複。

很明顯,暴力列舉法就誕生了,只需8個迴圈,對每種組合進行一一判斷即可。

10個數字依次填入,不滿足就退回去找其他的數字,這是乙個回溯的過程,所以我們可以使用深度優先搜尋來解決此問題。

#includeint a[2][5];

int cou = 0;

int check()

if (a[1][i] < a[1][i-1])

if (a[1][i] < a[0][i])

}return 1;

}int main()

} int b[8];

a[0][0] = 1;

a[1][4] = 10;

for (b[0] = 2; b[0] <= 6; b[0]++)}}

}}}}

} }printf("%d\n", cou);

}

#includeint a[2][5];

int cou = 0;

int flag[10];

int check()

if (a[1][i] < a[1][i-1])

if (a[1][i] < a[0][i])

}return 1;

}void dfs(int num)

return;

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

}int main()

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

dfs(0);

printf("%d\n", cou);

}

答案:42

藍橋杯方格填數DFS

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

藍橋杯 方格填數(dfs深搜)

如下的10個格仔 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。思路 直接暴力列舉每個位置可不可以安放 include include include ...

方格填數 (搜尋)

時間限制 1 sec 記憶體限制 128 mb 提交 60 解決 26 提交 狀態 討論版 如上面的10個格仔,填入0 9的數字,不能重複 原先已經填了一部分數字 要求 連續的兩個數字不能相鄰 左右,上下,對角都算相鄰 例如 數字0和1不能放在一起。問 一共有多少種可能的填數方案?輸入多組測試資料。...