如下的10個格仔
+--+
--+--+
||||
+--+--
+--+--
+|||
||+--
+--+--
+--+|
|||+
--+--+
--+
(如果顯示有問題,也可以參看【圖1.jpg】)
填入0~9的數字。要求:連續的兩個數字不能相鄰。
(左右、上下、對角都算相鄰)
一共有多少種可能的填數方案?
請填寫表示方案數目的整數。
注意:你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。
用全排列,然後再判斷每兩個位置之間的數是否滿足條件。
#include
#include
using
namespace std;
int a[10]
=;int ans;
bool
check()
voidf(
int k)
/*遞迴回溯生成全排列,適用於無重複元素的情況
考慮第k位,前面已經排好
*/for
(int i=k;i<
10;i++
)//交換數
f(k+1)
;//就相當於把1,2位復原,然後重新進入for迴圈交換1,3位 }}
intmain()
先將方塊填成5x6
,用-10填滿(然後把數填進入,這樣好判斷周圍的數是否連續)
入口(1,2),出口(3,4)
#include
#include
using
namespace std;
int a[5]
[6];
int vis[10]
;int ans;
bool
check
(int i,
int j)
}return
true;}
void
dfs(
int x,
int y)
//從0-9抓乙個
for(
int i=
0;i<
10;i++
) vis[i]=1
;//標記已訪問
if(y==4)
dfs(x+1,
1);//換行
else
dfs(x,y+1)
;//繼續右邊格仔 }}
}void
init()
}}intmain()
藍橋杯真題 方格填數
方格填數 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。思路 明顯是一道dfs題 答案 1580 include using namespace std...
藍橋杯省賽 方格填數C C
方格填數 如下的10個格仔 如果顯示有問題,也可以參看 圖1.jpg 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。dfs,不多說,下面是 includ...
藍橋杯題 方格填數
填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。我的思路是 先把這10個數進行排列,然後把排列後的數字存入乙個二維陣列b 3 4 中 2 用int c 8...