- 博客(97)
- 收藏
- 关注
原创 LeetCode19:删除链表的倒数第N个结点
}*/i < n;i ++) { //first指针向后走n步= null) {//当first走向最后一个节点时终止,此时second节点走到倒数第N+1个节点//first和second指针同时走//注意这里不能返回head。因为头结点head有可能被删掉。
2024-01-18 15:32:47 559
原创 多重背包问题 II(二进制优化)
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤10000<V≤20000<vi,wi,si≤200
2021-05-03 20:02:59 206
原创 多重背包问题 I
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1000<vi,wi,si≤100输入样例4 51
2021-05-01 21:52:08 147
原创 完全背包问题
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22
2021-04-30 16:14:33 211 1
原创 01背包问题
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22
2021-04-29 09:45:37 324
原创 [蓝桥杯2018初赛]第几个幸运数
到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505。去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。枚举每一个数,然后再判断,会超时,运行不出来;我
2021-04-17 10:08:29 153
原创 [蓝桥杯2020决赛]扩散
小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。请问,经过 2020 分钟后,画布上有多少个格子是黑色的。①bfs解
2021-04-14 17:28:59 347
原创 [蓝桥杯2017初赛]纸牌三角形
A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?输出输出一个整数表示答案思路:对9个数全排列,注意去重(翻转3次,镜像2次)#include <iostream>#include <algorithm>using namespace std;int a[9] = {1,2,3,4,5,6,7,8,9};bool
2021-04-14 16:00:03 133
原创 [蓝桥杯2017初赛]九宫幻方
小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分。三阶幻方指的是将1~9不重复的填入一个33的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。4 9 23 5 78 1 6有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到。现在小明准备将一个三阶幻方(不一定是上图
2021-04-11 11:06:08 175
原创 [蓝桥杯2017初赛]承压计算
X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。其中的数字代表金属块的重量(计量单位较大)。(参考输入中的金字塔)最下一层的X代表30台极高精度的电子秤。假设每块原料的重量都十分精确地平均落在下方的两个金属块上,最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。电子秤的计量单位很小,所以显示的数字很大。工作人员发现,其中读数最小的电子秤的示数为:2086458231请你推算出:读数最大的电子秤的示
2021-04-09 20:39:14 329
原创 [蓝桥杯2017初赛]等差素数列
2,3,5,7,11,13,…是素数序列。类似:7,37,67,97,127,157 这样全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?思路:因为这题是填空题,求长度为10的等差素数列,猜想最大的数应该不会超过10000,因此先枚举2~10000每个数,判断一下是否是素数;先
2021-04-09 19:32:19 186
原创 [蓝桥杯2017初赛]方格分割
6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。输出一个整数表示答案由上图可以看到分界线上的点关于(3,3)对称,因此,从(3,3)这个点向上下左右四个方向搜索,在搜索的时候将其关于(3,3)对称的点也标记成搜素过,这样在搜索到出口时,得到的图形就是对称的,注意上下和左右方向是对称的,在搜的时候会重复计算,因此得到的结果/4#include <iostrea
2021-04-09 13:55:34 111
原创 [蓝桥杯2017初赛]青蛙跳杯子
X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。*WWWBBB其中,W 字母表示白色青蛙,B 字母表示黑色青蛙,* 表示空杯子。X 星的青蛙很有些癖好,它们只做 3 个动作之一:跳到相邻的空杯子里。隔着 1 只其它的青蛙(随便什么颜色)跳到空杯子里。隔着 2 只其它的青蛙(随便什么颜色)跳到空杯子里。对于上图的局面,只要 1 步,就可跳成下图局面
2021-04-09 10:31:43 262
原创 [蓝桥杯2017初赛]跳蚱蜢
如图所示: 有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8。每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,…),至少要经过多少次跳跃?输出一个整数表示答案思路:...
2021-04-09 10:16:08 162
原创 [蓝桥杯2016初赛]卡片换位
你玩过华容道的游戏吗?这是个类似的,但更简单的游戏。看下面 3x2 的格子在其中放 5 张牌,其中 A 代表关羽,B 代表张飞,* 代表士兵。还有一个格子是空着的。你可以把一张牌移动到相邻的空格中去(对角不算相邻)。游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。输入格式输入两行 6 个字符表示当前的局面。输出格式一个整数,表示最少多少步,才能把 AB 换位(其它牌位置随意)。思路:和八数码类似①用getline()读入两行字符串,用一个start字符串拼接两行字符串
2021-04-08 14:42:03 191
原创 八数码(bfs)
在一个 3×3 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让 x 先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1 2 3 1 2 3x 4 6 4
2021-04-08 14:04:37 236
原创 [蓝桥杯2016初赛]交换瓶子
有 N 个瓶子,编号 1∼N,放在架子上。比如有 5 个瓶子:2 1 3 5 4要求每次拿起 2 个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换 2 次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式第一行包含一个整数 N,表示瓶子数量。第二行包含 N 个整数,表示瓶子目前的排列状况。输出格式输出一个正整数,表示至少交换多少次,才能完成排序。数据范围1≤N≤10000,输入样例1:53 1 2 5
2021-04-08 09:53:18 101
原创 [蓝桥杯2016初赛]剪邮票
如下图, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,下面两张图中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。输出请填写表示方案数目的整数。思路:总共有12个格子,可以先用一个一维数组来表示这12个格子,分为7个0和5个1,然后对这12个格子进行全排列。再将这12个格子映射到二维数组中去,对格子是1的进行dfs,判断格子是1的是否能形成一个连通块,如果可以形成,那么答案++这里对12个格子的全排列提
2021-04-06 20:06:33 85
原创 [蓝桥杯2016初赛]寒假作业
现在小学的数学题目也不是那么好玩的。看看这个寒假作业:每个方块代表1~13中的某一个数字,但不能重复。比如:6 + 7 = 139 - 8 = 13 * 4 = 1210 / 2 = 5以及:7 + 6 = 139 - 8 = 13 * 4 = 1210 / 2 = 5就算两种解法。(加法,乘法交换律后算不同的方案)你一共找到了多少种方案?输出请填写表示方案数目的整数。直接枚举1~13,13个数的全排列会超时,因此再dfs时剪枝,当枚举的四个表达式有一个不满足要
2021-04-04 20:51:41 111
原创 [蓝桥杯2016初赛]方格填数
如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?输出请填写表示方案数目的整数。#include <iostream>#include <algorithm>using namespace std;int a[10] = {0,1,2,3,4,5,6,7,8,9};int res;bool st[10];bool check(){ if ( abs(a[0] - a[
2021-04-04 20:01:05 110
原创 [蓝桥杯2015初赛]加法变乘法
我们都知道:1+2+3+ … + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+…+1011+12+…+2728+29+…+49 = 2015 就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交。(对于示例,就是提交10)。#include <iostream>using namespace std;int main(){ for (int i = 1 ; i <= 46 ; i
2021-04-04 11:48:17 128
原创 [蓝桥杯2015初赛]三羊献瑞
观察下面的加法算式:其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。输出请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。每个相同的汉字代表相同的数字,这些数字都是在0~9中选, 因此可以枚举所有的数字,对于每一位进行选择,使用STL全排列函数#include <iostream>#include <algorithm>using namespace std;
2021-04-04 11:05:29 147
原创 [蓝桥杯2015初赛]手链样式
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。他想用它们串成一圈作为手链,送给女朋友。现在小明想知道:如果考虑手链可以随意转动或翻转,一共有多少不同的组合样式?输出请你输出该整数。不要输出任何多余的内容或说明性的文字。思路:首先枚举字符串s的全排列;去掉重复排列(转动和翻转),这里复制一下字符串,存入vector数组中,再翻转复制后的字符串,存入vector数组中,如果枚举字符串s的的排列中,是存入vector中字符串的子串,说明重复,break#include <iostream>
2021-04-03 19:37:35 75
原创 unordered_set || unordered_map
unordered_set:自动删除重复元素,使得集合内元素各不相同 unordered_set<int> q; q.insert(1); q.insert(2); q.insert(1); q.insert(1); q.insert(1); cout << q.size() << endl; // 2 q.erase(1); q.find(1);unordered_set是一个集合,有的时
2021-04-02 18:34:28 130
原创 求最大公约数,__gcd()函数
手写递归版本int gcd(int a, int b){ if (b == 0) return a; return gcd(b , a % b);}直接调用函数__gcd(a,b);
2021-04-02 14:22:47 178
原创 人物相关性分析C++
小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob 有多少次同时出现。更准确的说,小明定义 Alice 和 Bob “同时出现”的意思是:在小说文本中 Alice 和 Bob 之间不超过 K 个字符。例如以下文本:This is a story about Alice and Bob. Alice wants to send a private message to Bob.假设 K=20,则 Alice 和 Bob 同时出现了 2 次,分别是 Alice and Bob
2021-03-27 15:37:36 512
原创 穿越雷区C++
X 星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。某坦克需要从 A 区到 B 区去(A,B 区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已知的地图是一个方阵,上面用字母标出了 A,B 区,其它区都标了正号或负号分别表示正负能量辐射区。例如:A + - + -B + - + -坦克车只能水平或垂直方向上移动到相邻的区。输入格
2021-03-27 13:01:26 664
原创 奇怪的数列C++
从 X 星截获一份电码,是一些数字,如下:13111331131321131113122113…YY 博士经彻夜研究,发现了规律:第一行的数字随便是什么,以后每一行都是对上一行“读出来”。比如第 2 行,是对第 1 行的描述,意思是:1 个 1,1 个 3,所以是:1113。第 3 行,意思是:3 个 1,1 个 3,所以是:3113。请你编写一个程序,可以从初始数字开始,连续进行这样的变换。输入格式第一行输入一个数字组成的串,不超过 100 位。第二行,一个数字 n,表示需要你
2021-03-27 10:50:01 1067
原创 C++字符串string与整数int的互相转化操作
一、string转化成int①采用最原始的string, 然后按照十进制的特点进行算术运算得到int,但是这种方式太麻烦,这里不介绍了。②采用标准库中的atoi函数 string s = "123"; int a = atoi(s.c_str());③采用标准库中的stoi函数 string s = "123"; int a = stoi(s);atoi()的参数是 const char* ,因此对于一个字符串s我们必须调用 c_str()的方法把这个string
2021-03-26 13:59:36 298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人