- 博客(103)
- 收藏
- 关注
原创 最小涂色成本——动态规划
题目描述现有n张不同大小的白纸排成一排,每张白纸可以涂成红、黄、蓝三种颜色之一,但不能有连续两张白纸涂成相同的颜色。假设给第i张白纸涂红色需要消耗的成本为ai,涂黄色需要消耗的成本为bi,涂蓝色需要消耗的成本为ci,求把n张白纸全部涂色需要的最小成本。输入描述第一行一个整数n(1≤n≤104),表示白纸张数;
2024-03-30 17:22:41
106
原创 递归调试——递归深度
题目描述递归代码的调试往往会很头疼,一个很重要的原因是在递归代码中输出的信息会因为多层而混在一起。但如果我们能在输出的调试信息前先输出一些和递归深度相关的数量的空格,就可以看出递归的层级,方便我们调试。例如当递归深度为1时先输出0个空格,递归深度为2时先输出4个空格,递归深度为3时先输出8个空格,以此类推,递归深度每多1,空格的个数就多4个)。请实现上面的做法。输入描述一个正整数n(1≤n≤12)。输出描述样例1输入1输出n=1样例2输入2输出n=2样例3输入3输出。
2024-03-28 21:21:05
193
原创 数塔——递归
题目描述数塔就是由一堆数字组成的塔状结构,其中第一行1个数,第二行2个数,第三行3个数,依此类推。每个数都与下一层的左下与右下两个数相连接。这样从塔顶到塔底就可以有很多条路径可以走,现在需要求路径上的数字之和的最大值。例如在上图中,5->8->12->10与5->3->16->11这两条路径上的数字之和都是35,是所有路径中的最大值。输入描述第一行一个正整数n(1≤n≤20),表示数塔的层数。接下来n行为数塔从上到下的每一层,其中第i层有i个正整数,每个数都不超过1000。输出描述。
2024-03-28 16:56:31
343
原创 反转字符串——递归
题目描述给定一个字符串,输出它的反转字符串。例如"abcd"的反转字符串是"dcba","abcde"的反转字符串是"edcba"。请使用递归实现。输入描述一个仅由小写字母组成的、长度不小于1且不超过100的字符串。输出描述给定字符串的反转字符串。样例1输入abcd输出dcba。
2024-03-28 16:17:15
220
原创 考场排名——复杂排名
题目描述给定n个考场中所有考生的姓名、分数,输出这些考生的考场内排名。输入描述第一行一个整数n(1≤n≤10),表示考场个数;接下来是n个考场的考生信息:对每个考场,第一行为考场内的考生数量k(1≤k≤100),接下来k行,每行为一个考生的姓名name和分数score(name为仅由大小写字母组成的不超过15个字符的字符串,0≤score≤100),用空格隔开。数据确保全局不会出现相同的姓名。输出描述按考生姓名的字典序从小到大输出,每行为一个考生的姓名、分数、考场内排名,用空格隔开。样例1。
2024-03-27 15:09:36
289
原创 计算排名II——排序
题目描述给定n个考生的分数,将它们从高到低排序,然后输出每个分数对应的排名。输入描述第一行一个整数n(1≤n≤1000),表示分数的个数;第二行共n个用空格隔开的整数(0≤score≤100),表示n个考生的分数。输出描述共n行,每行为一个分数和对应的排名,用空格隔开。样例1输入输出。
2024-03-27 11:30:32
98
原创 计算排名——排序问题
题目描述给定n个考生的分数,将它们从高到低排序,然后输出每个分数对应的排名。输入描述第一行一个整数n(1≤n≤1000),表示分数的个数;第二行共n个用空格隔开的整数(0≤score≤100),表示n个考生的分数。输出描述共n行,每行为一个分数和对应的排名,用空格隔开。样例1输入5输出100 192 290 390 387 5。
2024-03-27 11:06:40
194
原创 大整数排序——排序问题
输入第一行为一个整数N,(1<=N<=100)。接下来的N行每行有一个数,数的长度范围为1<=len<=1000。每个数都是一个正数,并且保证不包含前缀零。可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。对N个长度最长可达到1000的数进行排序。
2024-03-26 23:06:40
188
原创 打印日期——日期问题
可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。给出年分m和一年中的第n天,算出第n天是几月几号。
2024-03-26 22:58:06
128
原创 A+B——运算问题
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出。输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。请计算A+B的结果,并以正常形式输出,每组数据占一行。
2024-03-26 16:51:09
169
原创 公共前缀——字符串
题目描述给定n个字符串,求它们的公共前缀。输入描述第一行为一个正整数n(2≤n≤20),表示字符串的个数。接下来n行,每行一个字符串(仅由大小写字母组成),每个字符串的长度不超过50。输出描述输出n个字符串的公共前缀。如果没有公共前缀,那么输出空行。样例1输入3输出act样例2输入3输出。
2024-03-26 11:23:38
167
原创 首字母大写——字符串
题目描述给定一堆用空格隔开的英文单词,将每个单词的首字母改为大写后输出。输入描述一堆英文单词,每个单词不超过10个字符,且仅由小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。输出描述输出每个单词首字母大写后的结果,单词之间仍然是一个空格隔开,行末不允许有多余的空格。样例1输入输出。
2024-03-26 10:57:54
117
原创 单词倒序II——排序问题
题目描述给定一堆用空格隔开的英文单词,将每个单词内部逆序后输出(单词顺序不变)。输入描述一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。输出描述输出每个单词内部逆序后的结果,单词之间仍然是一个空格隔开,行末不允许有多余的空格。样例1输入输出。
2024-03-26 10:31:47
198
原创 单词倒序——排序
题目描述给定一堆用空格隔开的英文单词,输出这些英文单词的倒序(单词内部保持原序)。输入描述一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。输出描述输出英文单词的倒序,单词之间仍然是一个空格隔开,行末不允许有多余的空格。样例1输入输出。
2024-03-25 21:47:06
127
原创 周几——日期问题
题目描述给定一个日期DAY,求它是周几。输入描述第一行为给定的日期DAY(格式为YYYY-MM-DD,范围为1900-01-01≤DAY≤2199-12-31),数据保证一定合法。输出描述输出一个整数,表示周几。其中周一到周六分别用1−6表示,周天用0表示。样例1输入2021-05-01输出6样例2输入2021-05-02输出0。
2024-03-25 12:07:31
203
原创 日期减法——日期问题
题目描述给定一个日期DAY和一个正整数n,求日期DAY减去n天后的日期。输入描述第一行为给定的日期DAY(格式为YYYY-MM-DD,范围为1900-01-01≤DAY≤2199-12-31),数据保证一定合法;第二行为需要减去的天数n(1≤n≤10000)。输出描述以YYYY-MM-DD的格式输出减少了n天后的日期。样例1输入输出2021-05-01样例2输入输出2021-04-30。
2024-03-24 21:42:25
146
原创 日期加法——日期问题
题目描述给定一个日期DAY和一个正整数n,求日期DAY加上n天后的日期。输入描述第一行为给定的日期DAY(格式为YYYY-MM-DD,范围为1900-01-01≤DAY≤2199-12-31),数据保证一定合法;第二行为需要增加的天数n(1≤n≤10000)。输出描述以YYYY-MM-DD的格式输出增加了n天后的日期。样例1输入输出2021-05-31样例2输入输出2021-06-01。
2024-03-24 21:33:20
104
原创 成绩排序——排序
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。然后输出学生信息,按照如下格式: 姓名 年龄 成绩 学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。有N个学生的数据,将学生数据按成绩从低到高排序,如果成绩相同则按姓名字符的字典序由小到大排序,如果姓名的字典序也相同则按照学生的年龄从小到大排序,并输出N个学生排序后的信息。
2024-03-24 17:12:32
222
原创 神奇的口袋—动态规划
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目……接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2。输出不同的选择物品的方式的数目。
2024-03-24 15:40:42
199
原创 特殊排序—排序问题
可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。第二行将排序的结果输出。输入一系列整数,将其中最大的数挑出(如果有多个,则挑出一个即可),并将剩下的数进行排序,如果无剩余的数,则输出-1。输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。接下来的一行有N个整数。
2024-03-23 22:31:07
147
原创 a+b—高精度加法
输入包括两个数a和b,其中a和b的位数不超过1000位。可能有多组测试数据,对于每组数据, 输出a+b的值。实现一个加法器,使其能够输出a+b的值。
2024-03-23 21:57:35
181
原创 IP地址——字符串问题
可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!合法的IP地址为: a、b、c、d都是0-255的整数。每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。输入一个ip地址串,判断是否合法。
2024-03-23 17:08:21
121
原创 合并符串——字符串问题
给定两个字符串S1和S2,合并成一个新的字符串S。合并规则为,S1的第一个字符为S的第一个字符,将S2的最后一个字符作为S的第二个字符;将S1的第二个字符作为S的第三个字符,将S2的倒数第二个字符作为S的第四个字符,以此类推。包含多组测试数据,每组测试数据包含两行,代表长度相等的两个字符串S1和S2(仅由小写字母组成,长度不超过100)。
2024-03-23 11:45:16
199
原创 调整方阵——方阵运算
输入一个N(N<=10)阶方阵,按照如下方式调整方阵: 1.将第一列中最大数所在的行与第一行对调。2.将第二列中从第二行到第N行最大数所在的行与第二行对调。依此类推... N-1.将第N-1列中从第N-1行到第N行最大数所在的行与第N-1行对调。包含多组测试数据,每组测试数据第一行为一个整数N,表示方阵的阶数. 接下来输入这个N阶方阵.
2024-03-23 11:39:34
151
原创 查找——二分查找
输入数组长度 n 输入数组 a[1...n] 输入查找个数m 输入查找数字b[1...m] 输出 YES or NO 查找有则YES 否则NO。每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。如果在n个数组中输出YES否则输出NO。
2024-03-23 10:41:00
526
原创 找最小数——排序
第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。每组输入n,然后输入n个整数对。
2024-03-23 10:30:40
209
原创 二进制数——进制转换
大家都知道,数据在计算机里中存储是以二进制的形式存储的。有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。每行输出求得的二进制串。多行,每一行表示要求的数字。
2024-03-21 17:17:34
149
原创 堆栈的使用——堆容器
而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A';如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈是一种基本的数据结构。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A'操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E'。
2024-03-20 22:00:10
164
原创 排列与二进制
从n个不同元素中取出m(m<=n)个元素的所有排列的个数,叫做从n中取m的排列数,记为p(n, m)。具体计算方法为p(n, m)=n(n-1)(n-2)……(n-m+1)= n!=1).当n和m不是很小时,这个排列数是比较大的数值,比如 p(10,5)=30240。我们的问题就是,给定一个排列数,算出其二进制表示的后面有多少个连续的零。每行两个整数,n和m,0<m<=n<=10000,n=0标志输入结束,该组数据不用处理。对于每个输入,输出排列数p(n, m)的二进制表示后面有多少个连续的零。
2024-03-20 16:25:53
228
原创 怪异的洗牌
在本题目中,还引入另外一种洗牌方式,就是把前一半(如果总数是奇数,就是(n-1)/2)牌翻转过来,这种操作称之为翻转(flip)。当然,如果是实际的扑克牌,直接翻转会造成正反面混在一起的,我们就不管那么多了。给定n张牌,初始次序为从1到n,经过若干次的shift和flip操作后,结果会是什么样?n表示牌的数目,1<n<1000,k表示下面要进行的操作数量。随后的k行,每行一个整数x,1<=x<=n,表示从第几个位置开始移位。对于输入的每组数据,计算经过给定的k次shift和flip操作后,各个位置的数值。
2024-03-20 12:04:06
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人