发布网友 发布时间:2023-06-24 12:59
共3个回答
热心网友 时间:2023-11-25 01:32
① 因为要求必须剪的五张邮票数连接在一起的,所以根据这个特点我们可以知道可以使用dfs搜索进行五个方块的连通,一开始的想法是从当前的位置(i,j)出发,其中i,j表示二维坐标对应的位置,从当前的位置出发开始dfs搜索,每搜索一个位置那么就标记当前的(i, j)位置但是后面发现有的情况是漏掉了的,比如从第三行的数字9开始,因为之前已经搜索过第一行与第二行了所以这个时候以9开头的邮票是不能够剪成功的(最多存在9,10,11,12四块)而比如以9开始的1,2,3,5,9就是一个合法的剪法,所以上面这样标记是会忽略一些情况的,所以每一次从起点开始dfs搜索结束之后标记当前二维坐标位置已经访问是错误的解法热心网友 时间:2023-11-25 01:33
我们可以把它转变成全排列问题。因为一共12张,需要5张,我们可以创建一个数组,存放5个1和4个0,然后对其进行全排列(这里值得注意的是普通的全排列对重复的数字会产生重复的全排列,简单起见,我们使用c++里面STL中的next_permutation()),然后将其转化成二维数组,然后用dfs搜索看看有几个连通块,只有一个连通块就是一个可行的方案。热心网友 时间:2023-11-25 01:33
9张邮票剪五张连在一起邮票如下剪开,□代表邮票。