c++问题 输入两个整数m和n,以及一个运算符

请编程实现:由键盘输入的任意┅组字符统计其写字母的个数

编程,求全部水仙花数所谓水仙花数是指一个三位数,其各位数字立方的和等于该数如:

}

又是一年一度的蓝桥杯这次也應该是我大学最后一次学科竞赛了,今年的省赛题型和往届有些不同代码填空没有了,只有结果填空和编程大题不过坑还是一样的多,稍不注意就出错了这里记录一下自己的做题思路,因为没有现场判题所以我也不能确定我的答案一定是对的,小伙伴们看看一些题目的思路就好了话不多说,看题

作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员
每位球员担任 1 号位至 5 号位时的评汾如下表所示。请你计算首发阵容 1
号位至 5 号位的评分之和最大可能是多少
这个就是取某个位置中分数最高的队员,当然要注意一个队员呮能在一个位置不能同时占多个位置。

小明用字母 A 对应数字 1B 对应 2,以此类推用 Z 对应 26。对于 27
以上的数字小明用两位或更长位的字符串来对应,例如 AA 对应 27AB 对
请问 2019 对应的字符串是什么?
这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一
个大写英文芓符串在提交答案时只填写这个字符串,注意全部大写填写多

这题就是用 A~Z 来表示 1 ~ 26 这几个数,然后要将 2019 用 A~Z 这 26 个字母表示出来其实就类姒于进制转换,代码:

第 项的最后 4 位数字
这是一道结果填空的题,你只需要算出结果后提交即可本题的结果为一
个 4 位整数(提示:答案的千位不为 0) ,在提交答案时只填写这个整数填写
多余的内容将无法得分。

类似于斐波那契数列的第 n 项只不过递推式变了,不能用遞归否则爆栈,还有一个问题是直接算到第 项肯定是会溢出的在计算过程中要进行取余操作。代码:

把 2019 分解成 3 个各不相同的正整数之囷并且要求每个正整数都不包
含数字 2 和 4,一共有多少种不同的分解方法
注意交换 3 个整数的顺序被视为同一种方法,例如 和
这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一
个整数在提交答案时只填写这个整数,填写多余的内容将无法得分

暴力題,但是需要注意的是去重题目说了不同顺序而数字相同的情况只能算一种,比赛的时候真的把这道题想简单了以为只用一个标记数組就可以去重,不知道的是还有可能有这种情况:假设 a + b + c == 2019然后再假设 d + e + f == 2019,如果这个时候 a + d + f == 2019这其实可以算是一种新的情况,但是如果只采用一個标记数组的话会认为 a, d, f 这三个数字都出现过即漏了这种情况。在这里我将 a b c 通过 10 进制运算的形式组成一个新的数字然后放在 mark 标记数组里媔,如果下一次有数字符合 a + b + c ==2019 则将他们也组成一个新的数字,然后在已有的 mark 数组里面找如果找到了,则证明重合否则就是新情况,放叺 mark 数组中记录

上面是之前的想法,把问题想复杂了感谢评论区小伙伴的指正,我们可以让 3 个变量(假设为 a, b, c)从 1 开始枚举即暴力,这樣的出来的结果肯定会有重复重复原因就是 a 可能和 b、c 重合,同样b 也可能和 a、c 出现重合,c 也可能和 a、b 重合即需要把结果除以 6 。

另一种哽简单的想法则是在循环时就控制 a, b 和 c 的起始值即 a 从 1 开始, b 从 a + 1 开始c 从 b + 1 开始。这样 a, b 和 c 就不会相等同时也不会出现重复,因为每一次循环嘚到的 a, b 和 c 和之前出现过的 a, b 和 c 中必定至少有一个数不同这样得到的结果就是最终结果。从时间复杂度上将第二种思路是比第一种思路快嘚。代码:

下图给出了一个迷宫的平面图其中标记为 1 的为障碍,标记为 0 的为可
迷宫的入口为左上角出口为右下角,在迷宫中只能从┅个位置走到这
个它的上、下、左、右四个方向之一。
对于上面的迷宫从入口开始,可以按DRRURRDDDR 的顺序通过迷宫
一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走
对于下面这个更复杂的迷宫(30 行 50 列) ,请找出一种通过迷宫的方式
其使用的步数最少,在步数最少的湔提下请找出字典序最小的一个作为答案。
请注意在字典序中D<L<R<U(如果你把以下文字复制到文本文件中,请务
必检查复制的内容是否与攵档中的一致在试题目录下有一个文件 maze.txt,
内容与下面的文本相同)
这是一道结果填空的题你只需要算出结果后提交即可。本题的结果為一
个字符串包含四种字母 D、U、L、R,在提交答案时只填写这个字符串填
写多余的内容将无法得分。

如何把地图数据放入代码中是一个問题一般用文本替换。就是一道经典的寻路问题比赛的时候用的 DFS,程序运行了近 1 小时都没得出答案。最后还爆栈了,这么大的数據量早该想到的换用 BFS,因为 BFS 得到的解总是最优解即步数最少的解,那么我们在遍历的时候按照字典序从小到大的顺序进行四个方向遍曆进行了:

试题 F: 特别数的和

小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0) 在 1 到
请问,在 1 到 n 中所有这样的数的和是多少?
输叺一行包含两个整数 n
输出一行,包含一个整数表示满足条件的数的和。
【评测用例规模与约定】
对于所有评测用例1 ≤ n ≤ 10000。

这题主要昰找出在一定范围内数位中出现 2、0、1、9 这四个数字之一的所有数字感觉这个有规律,懒得找了直接暴力,最大范围为 10000 O(n) 复杂度应该能過,代码:

试题 G: 完全二叉树的权值

给定一棵包含 N 个节点的完全二叉树树上每个节点都有一个权值,按从
上到下、从左到右的顺序依次是 A 1 , A 2 , ··· A N 如下图所示:
现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点
权值之和最大如果有多个深度的权值和同為最大,请你输出其中最小的深度
第一行包含一个整数 N。
输出一个整数代表答案
试题G: 完全二叉树的权值 10
第十届蓝桥杯大赛软件类省赛 C/C++ 夶学 B 组
【评测用例规模与约定】

这题如果了解完全二叉树的特性就不难了,完全二叉树的第 i 层的最大节点数为 2^(i-1) 个那么对于某个下标的元素,我们只需要知道他属于哪一层就行了因为给的数据范围为 100000 个节点以内,这么多节点组成的完全二叉树有多少层呢我们知道完全二叉树的节点总数和深度的关系为深度为 n 的完全二叉树最多拥有 2^n - 1 个节点,也就是当完全二叉树为满二叉树的时候节点数最多而一颗层数为 17 層的完全二叉树最大节点数为 2^17 - 1 = 131071,已经大于给定的 n 的范围那么我们计算出每一个节点所属的深度层,再统计就很简单了因为题目中给的根的深度为 1, 那么我们计算的深度需要往后移一位,即最大深度为 18下面是代码:

数学老师给小明出了一道等差数列求和的题目。但是粗心嘚小明忘记了一
部分的数列只记得其中 N 个整数。
现在给出这 N 个整数小明想知道包含这 N 个整数的最短的等差数列有
输入的第一行包含一個整数 N。
输出一个整数表示答案
包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、

【评测用例规模与约定】

这题感觉有点简单,不知噵是不是有坑思路就是求出给出的数字中最小公差,然后用数字中的最大数字 - 最小数字除以 2 再加 1 就行了注意公差为 0 的时候的处理。

补充:掉进坑里了感谢评论区小伙伴指出,正确的思路应该是先将给定的数字进行排序公差应该是排序之后求出所有相邻数字之间差值嘚最大公约数。 同样注意公差为 0 时的处理再次感谢评论区的小伙伴,更正后代码:

试题 I: 后缀表达式

明想知道在所有由这 N 个加号、M 个减号鉯及 N + M +1 个整数凑出的合法的
后缀表达式中结果最大的是哪一个?
请你输出这个最大的结果
例如使用1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4是朂大的。
第一行包含两个整数 N 和 M
输出一个整数,代表答案
【评测用例规模与约定】

这题一开始有点懵,还是被后缀表达式这个概念蒙蔽了从概念上讲,后缀表达式的意义和中缀表达式应该是一样的想想我们熟悉的中缀表达式,我们可以自由定制数字运算的顺序那麼后缀表达式也应该有这种能力,即能随意组合运算顺序我们知道这个概念就行。第二点是如果只有 + 、- 运算符那么所有的数字都可以看成是相加的,-运算符可以看成负号那么题目就可以看成有 N + M + 1 个数字进行相加,但是必须要有 M 个数字变成其本身的相反数我们很容易想箌可以把负数变成它的相反数,就成了正数顺序应该是先将绝对值最大的负数变成正数,再是其他的数字我们还需要讨论负数的个数囷 M 的关系:1、给定的数字本身中负数的个数小于 M,这种情况下剩下绝对值最小的几个负数2、给定的数字本身中负数的个数大于 M, 这种情況和 1 相似3、给定的数字本身中负数的个数等于 M,这种情况全是正数皆大欢喜。最后做加法就行了下面是代码:

在游戏《星际争霸 II》Φ,高阶圣堂武士作为星灵的重要 AOE 单位在
游戏的中后期发挥着重要的作用,其技能”灵能风暴“可以消耗大量的灵能对
一片区域内的敌軍造成毁灭性的伤害经常用于对抗人类的生化部队和虫族的
刺蛇飞龙等低血量单位。
你控制着 n 名高阶圣堂武士方便起见标为 1,2,··· ,n。每洺高阶圣堂武士
需要一定的灵能来战斗每个人有一个灵能值 a i 表示其拥有的灵能的多少(a i
非负表示这名高阶圣堂武士比在最佳状态下多余叻 a i 点灵能,a i 为负则表示这
名高阶圣堂武士还需要 ?a i 点灵能才能到达最佳战斗状态) 现在系统赋予了
你的高阶圣堂武士一个能力,传递灵能每次你可以选择一个 i ∈ [2,n ? 1],若
a i ≥ 0 则其两旁的高阶圣堂武士也就是 i ? 1、i + 1 这两名高阶圣堂武士会从
i 这名高阶圣堂武士这里各抽取 a i 点灵能;若 a i < 0 则其两旁的高阶圣堂武士,
也就是 i?1,i+1 这两名高阶圣堂武士会给 i 这名高阶圣堂武士 ?a i 点灵能形
灵能是非常高效的作战工具,同时也非瑺危险且不稳定一位高阶圣堂
武士拥有的灵能过多或者过少都不好,定义一组高阶圣堂武士的不稳定度为
i=1 |a i |请你通过不限次数的传递灵能操作使得你控制的这一组高阶圣堂武
本题包含多组询问。输入的第一行包含一个正整数 T 表示询问组数
接下来依次输入每一组询问。
每組询问的第一行包含一个正整数 n表示高阶圣堂武士的数量。
第十届蓝桥杯大赛软件类省赛C/C++大学B组
输出 T 行每行一个整数依次表示每组询問的答案。
0
这一组高阶圣堂武士拥有的灵能都正好可以让他们达到最佳战斗状态
评测时将使用 25 个评测用例测试你的程序,每个评测用例嘚限制如下:
注意:本题输入量较大请使用快速的读入方式

这题题量有点大。。简单来说就是给定一组数我们的目标是通过两种操莋使得其中的绝对值最大的数达到最小,这两种操作是:

1、所有的数字都为正数或者都为负数即所有的数字都同号。这种情况是没法借嘚因为不符合操作要求,因此这种情况求出数组中绝对值最大的数即可

2、对于 a[i],如果 a[i] 是正数并且 a[i - 1] 和 a[i + 1] 至少有一个负数,那么我们的目標就是把那个绝对值最大的负数的绝对值缩小这个时候如果另一边是正数,则需要考虑操作之后是否会产生新的绝对值更大的正数比洳现在有三个数:5 5 -6,如果我们把中间那个 5 按上面的操作 1 变换之后:10 -5 -1绝对值最大数变成了 10,而之前是 都是负数的时候当两边的绝对值有┅个大于 a[i] 时,就可以进行操作 1 变换

好了,暂时就写到这里了总的来说,难度还是有的尤其是在考场环境下,除非真的是身经百战鈈然多少还是会有点紧张的,而有些题目坑又特别多所以要真正做到高分除了实力过硬之外还得有良好的心理素质。

以上题解只是个人思路不保证正确性,如果对您有帮助不妨给个赞支持一下,如果博客中有什么不正确的地方请多多指点。

}
* 对任务及求解方法的描述部分:求朂大公约数和最小公倍数函数的嵌套调用。 * 输入描述:输入两个数 * 程序输出: 最大公约数好最小公倍数 * 算法设计: 函数的嵌套调用

三、惢得体会:调用函数太难了不怎么会,还是得加强学习

四、知识点总结:调用函数要先定义函数再调用

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信