第十届蓝桥杯大赛软件类决赛C/C++ 大学B组 试题C: 拼接 解答
【问题描述】
小明要把一根木头切成两段,然后拼接成一个直角。
如下图所示,他把中间部分分成了n * n 的小正方形,他标记了每个小正方
形属于左边还是右边。然后沿两边的分界线将木头切断,将右边旋转向上后拼
接在一起。

要求每个小正方形都正好属于左边或右边,而且同一边的必须是连通的。
在拼接时,拼接的部位必须保持在原来大正方形里面。
请问,对于7 *7 的小正方形,有多少种合法的划分小正方形的方式。
#include <bits/stdc++.h>
using namespace std;
int ans = 0;
void invert(int n, int** a,int** b)
{
for (int i = 0; i < n; i++)
{
*((int *)b+n*i+n-1-i)=*((int *)a+n*i+n-1-i);
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0, k

本文介绍了第十届蓝桥杯大赛软件类决赛C/C++大学B组试题C的解答。问题涉及将7x7的正方形木头切割并旋转拼接成直角,要求所有小正方形属于同一边且连通。解决方案是通过递归穷举左右两侧的切割状态,并使用left和right数组进行判断,经过翻转和矩阵相加检查是否形成合法拼接。最终得出对于n*n的正方形,存在2^n种合法划分方式,该题答案为128。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



