2018年第九届 蓝桥杯C组 C/C++决赛题解
Posted tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018年第九届 蓝桥杯C组 C/C++决赛题解相关的知识,希望对你有一定的参考价值。 蓝桥杯历年国赛真题汇总:Here s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说: 你能算出s夫人现在的年龄吗? 注意,需要提交的是一个整数,不要填写任何多余的内容。 答案: 把 1~9 这9个数字分成两组,中间插入乘号, 比如: 符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少? 注意,需要提交的是一个整数,表示那个最大的积,不要填写任何多余的内容。 答案: 对于某个串,比如:“1234”,求它的所有全排列。 下面是实现程序,请仔细分析程序逻辑,并填写划线部分缺少的代码。 请注意:只需要填写划线部分缺少的内容,不要抄写已有的代码或符号。 答案: n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。 本题目就是已知 n,k 的情况下,求最后剩下的人的编号。 题目的输入是一行,2个空格分开的整数n, k 约定:0 < n,k < 1百万 例如输入: 程序应该输出: 资源约定: IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。 现在,假设每次只能交换2个席位,并且知道现在的席位分布, 输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。 比如,输入: 程序应该输出: 再比如,输入: 程序应该输出: 我们约定,输入字符串的长度n 不大于10万 资源约定: 小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由NxN个格子组成的2D迷宫。 有些格子上有无敌道具,我们用\'%\'表示。 处于无敌状态时,可以经过有陷阱的格子,但是不会拆除/毁坏陷阱,即陷阱仍会阻止没有无敌状态的角色经过。 给定迷宫,请你计算小明最少经过几步可以离开迷宫 第一行包含两个整数N和K。 (1 <= N <= 1000 1 <= K <= 10) 一个整数表示答案。如果小明不能离开迷宫,输出-1。 【样例输入1】 【样例输出1】 【样例输入2】 【样例输出2】 资源约定: 以上是关于2018年第九届 蓝桥杯C组 C/C++决赛题解的主要内容,如果未能解决你的问题,请参考以下文章 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - G.螺旋折线 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - F.递增三元组 2018年第九届蓝桥杯 - 省赛 - C/C++大学A组 - F.航班时间
1.年龄问题
"20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍"。
2.最大乘积
有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次。
984672 * 351 = 345619872
98751 * 3462 = 341875962
9 * 87146325 = 784316925
...
(只提交乘积,不要提交整个算式)
3.全排列
并且要求这些全排列一定要按照字母的升序排列。
对于“1234”,应该输出(一共4!=24行):1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
#include <stdio.h>
#include <string.h>
//轮换前n个,再递归处理
void permu(char* data, int cur)
{
int i,j;
if(data[cur]==\'\\0\'){
printf("%s\\n", data);
return;
}
for(i=cur; data[i]; i++){
char tmp = data[i];
for(j=i-1; j>=cur; j--) data[j+1] = data[j];
data[cur] = tmp;
permu(data, cur+1);
tmp = data[cur];
___________________________________ ; //填空
data[i] = tmp;
}
}
int main()
{
char a[] = "1234";
permu(a,0);
return 0;
}
4.约瑟夫环
(报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。
要求输出一个整数,表示最后剩下的人的编号。10 3
4
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms5.交换次数
招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:
ABABTATT,这使得应聘者十分别扭。
于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:
BBAAATTT 这样的形状,当然,也可能是:
AAABBTTT 等。
你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。
输出是一个整数,表示至少交换次数。TABTABBTTTT
3
TTAAABB
0
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms6.迷宫与陷阱
小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。
每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。
迷宫中有些格子小明可以经过,我们用\'.\'表示;
有些格子是墙壁,小明不能经过,我们用\'#\'表示。
此外,有些格子上有陷阱,我们用\'X\'表示。除非小明处于无敌状态,否则不能经过。
当小明第一次到达该格子时,自动获得无敌状态,无敌状态会持续K步。
之后如果再次到达该格子不会获得无敌状态了。输入
以下N行包含一个NxN的矩阵。
矩阵保证左上角和右下角是\'.\'。输出
5 3
...XX
##%#.
...#.
.###.
.....
10
5 1
...XX
##%#.
...#.
.###.
.....
12
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 3000ms