藍橋杯第七屆第6題 方格填數

2021-09-12 17:36:33 字數 2220 閱讀 8945

存粹做題感悟
如下的10個格仔

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

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

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

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

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

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

可以暴力,也可以全排列或者dfs,麻煩在於符合條件的判定比較冗長且雜。

暴力的話套一打for迴圈可以在中間點塞if判斷減少迴圈次數,反而全排列或dfs只是末端判定,中間不好加判斷語句,但用全排列或者dfs模板還是很簡單的

1先開個一維陣列存0到9,具體每個陣列元素的位置如圖(看了其他博主的部落格也有用二維的也可以,但要注意邊界和敲的時候多敲幾個小括號而已)

2扔進全排列模板:由第0位一次新增直到湊齊

3扔進judge函式判斷,具體位置如圖

package 真題2016

;public

class

fanggetianshu6

else

if(math.

abs(a[1]

-a[4])

==1||math.

abs(a[1]

-a[5])

==1||math.

abs(a[1]

-a[6])

==1||math.

abs(a[1]

-a[2])

==1)else

if(math.

abs(a[2]

-a[5])

==1||math.

abs(a[2]

-a[6])

==1)else

if(math.

abs(a[3]

-a[7])

==1||math.

abs(a[3]

-a[8])

==1||math.

abs(a[3]

-a[4])

==1)else

if(math.

abs(a[4]

-a[7])

==1||math.

abs(a[4]

-a[8])

==1||math.

abs(a[4]

-a[9])

==1||math.

abs(a[4]

-a[5])

==1)else

if(math.

abs(a[5]

-a[8])

==1||math.

abs(a[5]

-a[9])

==1||math.

abs(a[5]

-a[6])

==1)else

if(math.

abs(a[6]

-a[9])

==1||math.

abs(a[7]

-a[8])

==1||math.

abs(a[8]

-a[9])

==1)else counts++;}

public

static

void

swap

(int

a,int i,

int j)

public

static

void

qpl(

int[

] a,

int start)

else}}

public

static

void

main

(string[

] args)

;//就0-9,直接建立方便點

qpl(a,0)

; system.out.

println

(counts);}

}

第七屆藍橋杯 方格填數

方格填數 如下的10個格仔,填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。flag陣列標誌數字是否已經填在方格中67 8int check int a ...

藍橋杯 第七屆C B組 方格填數

描述 方格填數 如下的10個格仔 圖1.jpg 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。思路 每個格和與它相鄰的格的差的絕對值都不能為0 第一格a...

第七屆藍橋杯省賽 方格填數

一 問題描述 二 題目型別 結果填空 三 解題思路及 這題。我丟進了題目閱讀理解的坑里!我以為每個格仔填0 9的數,還被隊友嘲笑,真 閱讀杯 微笑 所以題目就是求0 9這十個數字填進圖中十個方格的填數方案,要求連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 這沒什麼好思考的,乙個暴力破解完事兒!對...