2023年藍橋杯 A組 方格填數(dfs)

2021-08-17 18:34:08 字數 712 閱讀 9820

題目分析:有兩種思路,一種是從左上角第乙個節點開始,向下面和右面依次遍歷,每次填乙個數,並且判斷是否和四周的數相鄰。 還有一種是直接全排列0-9,然後從左到右,從上到下依次填入,之後判斷是否滿足相鄰的格仔數不相鄰的條件,如果滿足則方案數+1.全排列用next_permutation函式即可。

#include #include #include #include #include using namespace std;

int map[5][5];

int vis[10];

int vis2[5][5];

int counts ;

int dx[8] = ;

int dy[8] = ;

int judge(int k,int x,int y)

return true;

}int ans = 0;

void dfs(int x,int y)

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

}int main()

{ memset(vis,0,sizeof(vis));

memset(vis2,0,sizeof(vis2));

for(int i = 0; i <= 4; i++)

for(int j = 0; j <= 4; j++)

map[i][j] = -2;

dfs(1,2);

cout<

方格填數(2023年藍橋杯)

如圖,如下的10個格仔,填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。看到這題第乙個想到的方法就是回溯,就很像八皇后,能填進去就填,填不進去就看下乙個位置 我做的是0 9不重複使用 我感覺這題麻煩就在判斷上 1.首先要...

藍橋杯2016 C C B組 方格填數

時間限制 1 sec 記憶體限制 128 mb 提交 26 解決 10 提交 狀態 討論版 命題人 admin 題目描述 如下的10個格仔 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不...

藍橋杯 2016c c A組 方格填數

判斷當前數字是否已經用過 int flag 3 4 用來儲存每個格仔,判斷格仔是否能用 int map 3 4 用來儲存數字的格仔 int ans 記錄數目 void init 初始化 flag 0 0 0 左上角格仔不能訪問 flag 2 3 0 右下角格仔不能訪問 void judge int ...