蓝桥杯--2017第八届C/C++C组省赛

标题:贪吃蛇长度

+-------------------------------------------------+
|                                                 |
|    H######                      ####            |
|          #                      #  #            |
|          #                      #  #            |
|          #     ####             #  #            |
|          #     #  #             #  #            |
|          ######@###             #  #            |
|                #       ####     #  #            |
|                #       #  #     #  #            |
|            ####@#######@###     #  #            |
|            #   #       #        #  #            |
| T          #####       #        #  #   ##       |
| #                      #      ###  ### ##       |
| ################       #      #      ####       |
|                #       #      #         #       |
|   ##############       #######@##########       |
|   #                         ###                 |
|   ###########################                   |
+-------------------------------------------------+

    小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。
经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。

    如上图,是游戏时画面截图。
    其中,H表示蛇头,T表示蛇尾。#表示蛇的身体,@表示身体交叉重叠的地方。
    你能说出现在的贪吃蛇长度是多少吗?

    其实,只要数出#的数目算1,数出@的数目,算2,再加上头尾各算1就计算好了。

    人工数一下?太累眼睛了,聪明的你为什么不让计算机帮忙呢?

    本题的要求就是: 请填写上图中贪食蛇的长度是多少?

    注意:需要提交的是一个整数,不要添加任何多余内容(比如说明或注释)
答案:数据读入题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

using namespace std;

int main() {
   
	int cnt = 0;
	string mpline;
	while (cin >> mpline) {
   
		if (mpline[0] == '9') {
   
			break;
		}
		for (string::iterator it = mpline.begin(); it != mpline.end(); it++) {
   
			if (*it == '#') {
   
				cnt++;
			} else if (*it == '@') {
   
				cnt += 2;
			}
		}
	}
	cout << (cnt+2) << endl; //加上蛇头和尾
	return 0;
}

标题:兴趣小组

为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。

由于工作需要,我们现在想知道:
    既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?

请你统计该数字并通过浏览器提交答案。

注意:答案是一个整数,不要提交任何多余的内容。

--------------------

笨笨有话说:
    哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。
不过,可以排序啊,要是每个文件都是有序的,那就好多了。

歪歪有话说:
    排什么序啊,这么几行数字对计算机不是太轻松了吗?
    我看着需求怎么和中学学过的集合很像啊.....

答案:20,用ctrl+H预处理下数据然后读入数据进行判断
#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>

using namespace std;

set<int> a,b,c;

int main() {
   
	a.clear();
	b.clear();
	c.clear();
	int tmp;
	while (cin >> tmp && tmp != 0) {
   
		a.insert(tmp);
	}
	while (cin >> tmp && tmp != 0) {
   
		b.insert(tmp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胡同的诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值