剪格仔 藍橋杯

2022-08-15 08:57:14 字數 1012 閱讀 5084

這是2023年第四屆藍橋杯全國軟體大賽預賽a組(c/c++組)第9題,為程式設計題,方法是深度優先搜尋(dfs)。

本題的主要思路是深度優先搜尋,但要注意一次深度優先搜尋結束後的狀態恢復。

題目給出的「挖洞剪法也可」,更加肯定了dfs的正確性。

雖然是倒數第二題,難度並沒那麼大。

#include #include #include #include #define maxmn 20

using namespace std;

int m, n;

int sum;

int map[maxmn][maxmn];

int vis[maxmn][maxmn];

vectorv;

int cnt = 0;

int sumd = 0;

void print(int x)

void dfs(int x, int y)

vis[x][y] = 1;

cnt++;

sumd += map[x][y];

if(sumd * 2 == sum)

for(int i = -1; i <= 1; i++)

int newx = x + i;

int newy = y + j;

if(newx >= 0 && newx < n && newy >= 0 && newy < m)

} }sumd -= map[x][y];

cnt--;

vis[x][y] = 0;

}int main(void)

} if(sum % 2 == 1)

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

dfs(0, 0);

//for_each(v.begin(), v.end(), print);

cout << *min_element(v.begin(), v.end()) << endl;

return 0;

}

(全文完)

剪格仔 藍橋杯

問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。本題的要求就是請你程式設計判定 對給定的m x n 的格仔中的整數,是否可以分割為兩個部分,使得這兩個區域的數字和相等。如果存在多種...

剪格仔 藍橋杯

這是2013 年第四屆藍橋杯全國軟體大賽預賽a組 c c 組 第9 題,為程式設計題,方法是深度優先搜尋 dfs 如圖p1.jpg 所示,3 x 3 的格仔中填寫了一些整數。我們沿著圖中的紅色線剪開,得到兩個部分,每個部分的數字和都是60。本題的要求就是請你程式設計判定 對給定的 m x n 的格仔...

藍橋杯 剪格仔

問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。本題的要求就是請你程式設計判定 對給定的m x n 的格仔中的整數,是否可以分割為兩個部分,使得這兩個區域的數字和相等。如果存在多種...