藍橋杯Java B組之方格填數

2021-09-12 17:41:45 字數 1180 閱讀 4970

方格填數

如下的10個格仔

+--+--+--+

| | | |

+--+--+--+--+

| | | | |

+--+--+--+--+

| | | |

+--+--+--+

(如果顯示有問題,也可以參看【圖1.jpg】)

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

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

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

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

注意:你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。

public

class

main

public

static

boolean

check

(int

a)}}

}}}}

}return

false;}

private

static

void

dfs(

int[

] a,

int step)

return;}

else

}return;}

public

static

void

main

(string[

] args)

;dfs

(a,0);

system.out.

println

(count);}

}

方格填數和湊算式的解題思路都是將可能取到的數用乙個數組裝起來,然後對陣列進行全排列,然後在遞迴呼叫中檢驗每種組合是否符合題意

如對check檢驗,然後交換變成,check檢驗,復原,

交換成,check檢驗,此時在遞迴中繼續壓棧,繼續交換成,check檢驗,

然後復原,再彈棧復原......就這麼一直交換和復原,其中過程有一些省略,

具體的可以自己畫乙個棧將每次呼叫的方法壓棧出棧去理解,推導一下前面的過程就可以理解整個呼叫過程了,

它執行次數為全排列a1,1+a2,2+a3,3+a4,4+a5,5+a6,6+a7,7+a8,8+a9,9+a10,10的和。

藍橋杯 方格填數

方格填數 如下的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記錄每個方格的數字。我只要寫判斷語句就行了...