![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
彩彩爱吃草莓
这个作者很懒,什么都没留下…
展开
-
1558: [蓝桥杯2021初赛] 砝码称重 C/C++
砝码称重题目描述你有一架天平和N 个砝码,这N 个砝码重量依次是W1, W2, ... , WN。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数N。第二行包含N 个整数:W1, W2, W3, ... , WN。对于50% 的评测用例,1 ≤ N≤15。对于所有评测用例,1≤N≤100,N 个砝码总重不超过100000。输出格式输出一个整数代表答案。输入样例31 4 6输出样例10...原创 2022-04-05 11:18:35 · 2375 阅读 · 6 评论 -
1066: 消消乐 (删除连续相同的三个字符) C++
题目描述:一个字符串,如果连续三个都是同一个字母的话,它们将会被消去。每次只能消去相邻的相同的三个字母。例如aaaabbbc,消去后变成ac。有些特殊的字符串,消去一次之后还可以再次消去。例如abbbaa:第一次消去了中间的bbb,变成了aaa,第二次消去aaa,字符串变成空字符串。现在给你一个长度不超过100的字符串,请你不断地对这个字符串进行消去,直到不能消去为止。输入格式:一行,长度不超过100的字符串。输出格式:第一行,输出最终剩下的字符串的长度。第二行,输出最终的字原创 2022-04-05 10:32:26 · 3098 阅读 · 0 评论 -
1320: [蓝桥杯2017初赛]方格分割 C/C++
题目描述:6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。输出格式:输出一个整数表示答案本题采用dfs算法,我们会发现,不管怎样切割,表格的中心点(3,3)必定是切割点,所以我们选择使用从中心点(3,3)处开始深搜切割点的方法而不是深搜格子的方法,当搜索到的切割点在边沿处则是搜索完毕(到达边沿处即已经将表格切割为两块)。另外要注意的是,旋转对称.原创 2022-03-10 21:08:54 · 1124 阅读 · 0 评论 -
1288: [蓝桥杯2016初赛]密码脱落 C/C++
题目描述:X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。输入格式:输入存在多组测试数据,对于每组测试数据输入一行,表示现在看到的密码串(长度不大于1000)输出格式:对于每组测试数据要求输出一个正原创 2022-03-05 10:47:24 · 607 阅读 · 1 评论 -
1265: [蓝桥杯2015决赛]四阶幻方 C/C++
题目描述:把1~16的数字填入4x4的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。四阶幻方可能有很多方案。如果固定左上角为1,请计算一共有多少种方案。比如:1 2 15 1612 14 3 513 7 10 48 11 6 9以及:1 12 13 82 14 7 1115 3 10 616 5 4 9就可以算为两种不同的方案。输出格式:请提交左上角固定为1时的所有方案数字分析:本以为本题可以采...原创 2022-03-03 19:19:45 · 923 阅读 · 1 评论 -
1284: [蓝桥杯2016初赛]方格填数 C/C++
题目描述如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?输出格式请填写表示方案数目的整数。方法:dfs在构造格子的二维数组时,如果直接按照题目所给的构造一个3*4的数组,那我们就需要考虑各种格子的情况比如说左下角的格子需要检验上方、右上方以及右方的格子,而右上角的格子需要检验下方、左下方以及左方的格子,那么填每个格子的时候所需要检验的格子方位都不同。如此一来需要分多种情况,太麻烦了,所以我们可以直接..原创 2022-03-01 21:39:06 · 533 阅读 · 0 评论 -
深度优先搜索合集(DFS )持更
例题1:数字金字塔问题描述:观察下面数字金字塔。找出从最高点到底部任意处结束的路径,使得路径经过数字的和最大。每一步可以从当前点走到左下方或者走到右下方。注意:行数1<=n<=1000。我的题解:#include <iostream>using namespace std;int A[101][101] = {0};int n,ans = 0;int dx[3] = {0,1,1};int dy[3] = {0,0,1};/*5 73 58.原创 2022-02-16 17:10:54 · 425 阅读 · 0 评论