数组字符串
放置一些字符串和数组类型的题目
深巷wls
平平无奇
展开
-
吃火锅(find函数的使用)
本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。输入格式:输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。输出格式:首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含chi1 huo3 guo1,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1 .原创 2021-05-08 10:38:07 · 525 阅读 · 0 评论 -
亲和串(KMP算法,find函数的使用)
题目描述人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。输入本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于10原创 2021-05-16 11:06:41 · 494 阅读 · 1 评论 -
阶乘求导 多比特杯武汉工程大学第四届ACM程序设计竞赛(C/C++)
先把数据都存起来,然后每次直接输出即可。原创 2022-06-03 14:54:47 · 327 阅读 · 0 评论 -
派蒙家的荧女仆(C/C++)
用一个变量ans记录目前桌子上的袜子数量,用maxx记录桌子上袜子的最大数量,很明显,当某一双袜子出现第一支的时候,ans++,出现第二只的时候ans–,每次ans++的时候,就看是否需要更新maxx,最后输出maxx即可。原创 2022-06-01 14:20:27 · 490 阅读 · 0 评论 -
L2-2 点赞狂魔 (25 分)(C/C++)
输入样例:5bob 11 101 102 103 104 105 106 107 108 108 107 107peter 8 1 2 3 4 3 2 5 1chris 12 1 2 3 4 5 6 7 8 9 1 2 3john 10 8 7 6 5 4 3 2 1 7 5jack 9 6 7 8 9 10 11 12 13 14输出样例:jack chris john思路:这题用set来存数据,自动去重很好用。其次是看出来到底是怎么怎么排序,标签出现次数平均值最小的,应该是.原创 2022-04-17 20:34:33 · 1648 阅读 · 0 评论 -
L1-8 均是素数 (20 分)(C/C++)
思路:先把给定区间内的素数按顺序存在数组里,再对数组进行遍历查找即可。#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>#include<algorithm>#include<string.h>#include<math.h>#define llu unsigned long longusing namespace s.原创 2022-04-17 20:22:02 · 2266 阅读 · 0 评论 -
L2-4 哲哲打游戏 (25 分)(C/C++)
输入样例:10 113 2 3 41 63 4 7 51 31 92 3 53 1 8 51 92 8 1001 10 30 11 20 20 22 20 30 11 10 2输出样例:13910直接用二维数组会炸内存,所以用vector的一维数组当二维数组使用。用vector a[N] 数组来存放每个剧情点对应操作能跳到哪个剧情点。用int b[N]来存每个存档点对应的剧情点。然后直接模拟即可。#include<iostream&.原创 2022-04-16 10:48:01 · 3018 阅读 · 0 评论 -
L2-037 包装机 (25 分)(C/C++)
输入样例:3 4 4GPLTPATAOMSA3 2 3 0 1 2 0 2 2 0 -1输出样例:MATA这道题需要注意的就是当框空的时候,按下0是什么都不会发生的。当对应轨道空的时候,按下对应轨道的数字也是什么都不会发生的当对应轨道不为空,但是框满的时候,需要先把框顶的弹出来,再装进去新的。#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>..原创 2022-04-16 08:41:14 · 356 阅读 · 0 评论 -
L1-8 乘法口诀数列 (20 分)(C/C++)
用一个数组存放运算的结果,因为题目给出的数最大为9,随意乘积最大为81。所以如果≥10就分成两位来存,先存十位再存个位。小于10就直接存在下一个里面。#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>#include <algorithm>#include<string.h>#include<math.h>#define.原创 2022-04-16 08:27:11 · 337 阅读 · 1 评论 -
L1-6 吉老师的回归 (15 分)(C/C++)
输入样例1:5 1L1-1 is a qiandao problem.L1-2 is so...easy.L1-3 is Easy.L1-4 is qianDao.Wow, such L1-5, so easy.输出样例1:L1-4 is qianDao.输入样例2:5 4L1-1 is a-qiandao problem.L1-2 is so easy.L1-3 is Easy.L1-4 is qianDao.Wow, such L1-5, so!!easy.输出样.原创 2022-04-16 08:21:21 · 1332 阅读 · 0 评论 -
L1-8 阅览室 (20 分)(C/C++)
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。输入格式:输入在第一行给原创 2022-03-29 20:49:15 · 316 阅读 · 0 评论 -
L1-6 检查密码 (C/C++)
本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。输入格式:输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。注意: 题目保证不存在只有小数点的输入。输出格式:对每个用户的密码,在一行中输出系统反馈信息,分以下5种:如果密码合法,输出Your password is wan mei.;如原创 2022-03-29 20:32:21 · 715 阅读 · 0 评论 -
L1-7 谷歌的招聘 (20 分)(C/C++)
2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e=2.718281828459045235360287471352662497757247093699959574966967627724076原创 2022-03-29 20:19:01 · 533 阅读 · 0 评论 -
B.扩散(C/C++)queue队列
【问题描述】小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色。请问,经过 2020 分钟后,画布上有多少个格子是黑色的。思路:因为数组坐标没有负的,所以原创 2022-03-26 09:55:12 · 729 阅读 · 0 评论 -
7-9 抢红包 (25 分)(C/C++)
103 2 22 10 58 8 1255 1 345 3 211 5 233 7 13 8 1011 7 88002 1 1000 2 10002 4 250 10 3206 5 11 9 22 8 33 7 44 10 55 4 21 3 88002 1 23 2 1231 8 2504 2 121 4 516 7 112 9 10输出样例:1 11.632 3.638 3.633 2.117 1.696 -1.679 -2.1810 -3.265 -3.26.原创 2022-03-15 19:19:19 · 1598 阅读 · 0 评论 -
拼成最小的数 V2(C/C++)
本来想直接用字典序给数列排序,然后按顺序输出,但是会有特殊情况不符合。正确的贪心策略是将两个字符串加起来排序,然后按顺序输出。AC代码:#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>#include <algorithm>#include<string.h>#include<math.h>#define llu u.原创 2022-02-11 16:34:28 · 289 阅读 · 1 评论 -
简易版数列分段(C/C++)
这道看了看发现直接模拟就行了…#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>#include <algorithm>#include<string.h>#include<math.h>#define llu unsigned long longusing namespace std;int main(){ i.原创 2022-02-11 16:09:12 · 586 阅读 · 0 评论 -
组合数问题(杨辉三角)C/C++
规律就是杨辉三角啊.对于一个矩阵a,我们能在O(1)时间内求出子矩阵[x1x2][y1y2]的和。设sum[i][j]为子矩阵[1i][1j]的和。则由容斥原理得:sum[0][j]=sum[i][0]=0a[x1x2][y1y2]=sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]。其实就是降低时间复杂度,拿空间换时间。每一个元素先开始预处理得到以(1,1)为左上角,自身为右下角的矩阵里所有元素之和。之后你要是想计算某个区间内的...原创 2022-01-16 21:25:58 · 366 阅读 · 0 评论 -
矩阵乘法(C/C++)
直接模拟即可:#include<iostream>#include<cstdio>#include<iomanip>#include<cstdlib>#include <algorithm>#include<string.h>#include<queue> #include<math.h>#include<set>#define ll long longusing names..原创 2022-01-15 19:31:24 · 112 阅读 · 0 评论 -
最长回文子串(C/C++动态规划)
题目描述输入一个字符串Str,输出Str里最长回文子串的长度。回文串:指aba、abba、cccbccc、aaaa这种左右对称的字符串。串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符)串例如 abc 这个串的子串:空串、a、b、c、ab、bc、abcInput输入Str(Str的长度 <= 1000)Output输出最长回文子串的长度L。Sample InputdaabaacSample Output5令dp[i][j]表示S[i]至S[j]所表示的子串原创 2022-01-08 19:44:55 · 3302 阅读 · 0 评论 -
子串查找(KMP)(可重叠)C/C++
题目描述这是一道模板题。给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。A 和 B中的字符均为英语大写字母或小写字母。A 中不同位置出现的 B 可重叠。输入格式输入共两行,分别是字符串 A 和字符串 B。输出格式输出一个整数,表示 B 在 A 中的出现次数。思路一,参考剪花布条直接暴力搜索一遍。结果时间超限,只有60分#include<iostream>#include<cstdio>#include<iomanip>#i原创 2022-01-08 18:46:28 · 1163 阅读 · 0 评论 -
KMP算法以及改进(C/C++)
KMP算法的作用是在一个已知字符串中查找子串的位置,也叫做串的模式匹配。第一种我们容易想到的就是暴力求解法。也叫朴素的模式匹配:简单来说就是:从主串s 和子串t 的第一个字符开始,将两字符串的字符一一比对,如果出现某个字符不匹配,主串回溯到第二个字符,子串回溯到第一个字符再进行一一比对。如果出现某个字符不匹配,主串回溯到第三个字符,子串回溯到第一个字符再进行一一比对,一直到子串字符全部匹配成功。这种算法在最好情况下时间复杂度为O(n)。即子串的n个字符正好等于主串的前n个字符,而最坏的情况下时间复杂度原创 2022-01-08 17:26:06 · 2422 阅读 · 0 评论 -
剪花布条(C/C++)
用的是C语言里字符串的一些处理函数,需要了解请看此处题目描述一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输入格式输入数据为多组数据,读取到 # 字符时结束。每组数据仅有一行,为由空格分开的花布条和小饰条。花布条和小饰条都是用可见 ASCII 字符表示的,不会超过 1000 个字符。注意:这个 # 应为单个字符。若某字符串开头有 #,不意味着读入结束!输出格式对于每组数据,输出一行一个整数,表示能从原创 2022-01-08 14:11:13 · 659 阅读 · 0 评论 -
判断字符串是否为回文(C/C++)
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。输入格式输入为一行字符串(字符串中没有空白字符,字符串长度不超过 100100)。输出格式如果字符串是回文,输出"yes";否则,输出"no"。Sample InputabcdedcbaSample Outputyes直接再存一个倒序的串,判断和之前的一不一样即可;#include<iostream>#include<cstdio>#include<iomanip>#incl原创 2022-01-07 15:58:07 · 3216 阅读 · 0 评论 -
数字反转(C/C++)
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。输入格式输入共 1 行,一个整数 N。输出格式输出共 1 行,一个整数,表示反转后的新数。数据范围−1,000,000,000≤N≤1,000,000,000。Sample Input123Sample Output321Sample Input 2-380Sample Output 2-83这题我们直接用字符串做更简单原创 2022-01-07 15:03:42 · 2098 阅读 · 0 评论 -
大小写转换(多实例输入)
读入一些字符串,将其中的小写字母转成大写字母(其他字符不变)。输入输入为多行,每行为一个字符串,字符串只由字母和数字组成,长度不超过80。输入以“End of file”结束。输出对于每行输入,输出转换后的字符串。输入示例HelloICPC200412345abcde输出示例HELLOICPC200412345ABCDE提示用“scanf("%s", str) == 1”这个条件可以判断输入是否结束。如果此条件为假,则输入结束(对于本题)。#include<iostrea原创 2022-01-07 13:36:13 · 201 阅读 · 0 评论 -
string输入问题的一些笔记(getline,cin.getline)
C++中使用cin输入string类型的变量时,会出现遇到空格就认为输入完成的情况,这里就需要用到另外一种输入方式getline#include<iostream>#include<string>using namespace std;int main(){ string s; cin>>s; //不能输入空格 getline(cin,s,'#'); //可以输入空格,遇到‘#’才会停下来 cout<<s;}cin.ge原创 2022-01-07 12:16:54 · 1637 阅读 · 0 评论 -
公共质因数之和(C/C++)
题目描述有N个正整数,求这N个正整数两两之间的公共质因数之和输入说明第1行:正整数N(N<100)第2行: N个空格分隔的正整数(每个元素<10000)输出说明输出这N个正整数两两之间的公共质因数之和,结果对1000000007取模。输入样例44 6 8 9输出样例11说明:4=22,6=23,8=222,9=3*3,所以4与6的公共质因数为2;4与8的公共质因数为2、2;4与9没有公共质因数,记为0。#include<iostream>#include原创 2021-12-11 14:02:48 · 1542 阅读 · 1 评论 -
最小公倍数之和C/C++
题目描述有N个正整数,求这N个正整数两两之间的最小公倍数之和。输入说明第1行 正整数N(N<=100)。第2行 N个用空格分隔的正整数(每个正整数不超过10000)。输出说明输出这N个正整数两两之间的最小公倍数之和,结果对1000000007取模。输入样例42 3 7 6输出样例95两个数的最小公倍数记为lcm(a,b),两个数最大公约数记为gcd(a,b)。辗转相除法求最小公约数有a*b=gcd(a,b)*lcm(a,b)#include<iostream&g原创 2021-12-11 12:14:19 · 708 阅读 · 0 评论 -
Excel两列之间有多少列(C/C++)
题目描述Excel表列名称由字母A~Z组成,列字母的规律如下:A、B、C…Z、AA、AB…AZ、BA、BB…ZZZZY、ZZZZZ…,现在请你计算2列之间含有多少列单元格。输入说明1行,用空格分分隔的2个字符串,分别表示列名称,字符串长度均小于等于5。输出说明1行,一个整数,表示两个列之间包含的列数。输入样例AA AZ输出样例24算一下,A~Z共26个字母,A是第一列,AA是第27 = 1*26 +1列,AAA是27*26+1列,AAAA是第(27*26+1)*26列当然这里要注意原创 2021-12-10 17:18:19 · 1756 阅读 · 0 评论 -
理综选拔(C/C++)
题目描述某校进行了一场月考,考试科目为:物理、化学、生物,每科的满分都是一百分。考试结束后老师想找出理科综合能力较强的3名同学参加竞赛,各科权重为40%,35%,25%,按权重计算总分(加权总分结果四舍五入保留到小数第一位)。若总分相同则按照物理、化学、生物优先级进行得分高低的排序。输入说明第一行,一个整数n,表示参加考试的学生的数量。3<=N<=500。接下来n行,每行第一个为学生学号(8位数字),后面跟着三个用空格隔开的整数,分别表示该学生三个科目的得分情况,每个整数都是0到100之原创 2021-12-06 11:58:42 · 690 阅读 · 0 评论 -
P1969 [NOIP2013 提高组] 积木大赛C/C++
P1969 [NOIP2013 提高组] 积木大赛这个题直接找规律就行了,可以发现h[i]<h[i+1],即左边的一组比右边的矮,当高度满足左面时,右边的还差一些,那么ans加上两堆的高度差;h[i]>=h[i+1],即左边的一组比右边的高,当高度满足左面时,右边的也一定满足了,所以不需要增加ans。所以最终结果就是a[0]+ans#include<iostream>#include<cstdio>#include<queue> #incl原创 2021-12-05 11:27:15 · 1104 阅读 · 0 评论 -
P1115 最大子段和(DP,贪心,暴力)C/C++
P1115 最大子段和思路一:直接暴力,3个测试点超时,40分#include<iostream>#include<cstdio>#include<queue> #include<algorithm>#include<vector>using namespace std;#define ull unsigned long longint main(){ int n,a[200010]; cin >> n ;原创 2021-12-05 11:08:41 · 754 阅读 · 0 评论 -
P1214 [USACO1.4]等差数列 Arithmetic Progressions(C/C++)
P1214 [USACO1.4]等差数列 Arithmetic Progressions思路:暴力,把每一个双平方数都放进桶里,然后搜索即可#include<iostream>#include<cstdio>#include<queue> #include<algorithm>#include<vector>using namespace std;#define ull unsigned long longint n,m;原创 2021-12-04 22:05:18 · 478 阅读 · 0 评论 -
P1331 海战(C/C++)
P1331 海战输入6 8.....#.###.....###.....#.......##......##..#...#输出:There are 5 ships.思路:这题用暴力能直接求解,进入循环先判断是否当前是违规情况如果是直接输出达咩达咩如果不是判断当前是不是战舰,如果当前位置是并且上面和左面不是,就把战舰数++,如果当前是,但是上面或左面也是,那说明这是同一艘战舰啊,战舰数就不加了。至于怎么判断是否违规呢,违规情况就下面这四种啦:# # . #或# ##原创 2021-12-02 15:35:44 · 824 阅读 · 0 评论 -
P1923 【深基9.例4】求第 k 小的数(priority_queue优先队列,nth_element函数,二分排序搜索)C/C++
P1923 【深基9.例4】求第 k 小的数这个题据说能用快速输入卡时间通过,但是我这里不用,仅在此说一下我做此题的思路,有需要了解快速输入的同学可以自行搜索。**优先队列思路:看到这个题,第一感觉是用sort,但是就想试试优先队列,结果只得了60分**#include<iostream>#include<cstdio>#include<queue> #include<vector>using namespace std;#define原创 2021-12-02 10:48:25 · 764 阅读 · 0 评论 -
洛谷P1138 第k小整数(STL的unique函数)C/C++
P1138 第k小整数思路:其实直接用数组也能做,但是这里我想用一下STL里的unique函数,这个函数作用就是把数组伪去重,重复的数放在数组末AC代码:#include<bits/stdc++.h>using namespace std;int n,k,a[10000];int main(){ cin >> n >> k; for(int i=0;i<n;i++) cin >> a[i]; sort(a,原创 2021-12-01 11:04:06 · 523 阅读 · 0 评论 -
洛谷P1793 跑步(并查集)C/C++
P1793 跑步输入输出样例输入6 61 22 42 33 54 55 6输出22 5思路:并查集解法,在循环中依次把每个路口都忽略一遍,看结果起点1结点和终点n节点是不是在同一个集合里,如果在,就说明这个忽略的节点不是必经路口;如果不在,就说明这个路口是必经路口,保存下来AC代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;原创 2021-11-30 23:07:20 · 416 阅读 · 0 评论 -
洛谷P1716 双调序列(C/C++)
P1716 双调序列输入输出样例输入510-133-9输出10-93-13思路:sort一遍然后头尾轮流输出一个即可,注意控制好别多输出就行AC代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ long int n; cin >> n ; long int a[1010];原创 2021-11-29 16:14:05 · 689 阅读 · 0 评论 -
洛谷P1111 修复公路(并查集)C/C++
P1111 修复公路输入输出样例输入4 41 2 61 3 41 4 54 2 3输出5说明/提示N≤1000,M≤100000x≤N,y≤N,t≤100000思路:按时间sort一遍,每次合并两个节点,显然如果原先不连通那么合并之后联通块数量–然后如果n==1就输出当前时间return;AC代码:#include<iostream>#include<cstdio>#include<algorithm>using namesp原创 2021-11-29 12:10:34 · 783 阅读 · 0 评论