這是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 的格仔中的整數,是否可以分割為兩個部分,使得這兩個區域的數字和相等。如果存在多種...