題目分析:有兩種思路,一種是從左上角第乙個節點開始,向下面和右面依次遍歷,每次填乙個數,並且判斷是否和四周的數相鄰。 還有一種是直接全排列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 ...