初赛选择题

初赛选择题

题目描述

每年十月份,是信息学竞赛的初赛时间。初赛会有不少选择题,涉及到不少计算机基础知识和图论方面的知识。
对于很多学习信奥时间不长的同学,选择题也是一个挑战。为了帮助大家提高这方面的能力,帅哥老师设置了一个有趣的玩法。
一次训练最高分是h分,0<=h <= 100,初始的时候给你s分,0<=s <=h,做题时每做对1题得1分,但当分数达到h分时不再增加。
每做错1题扣1分,但分数为0分时做错题不再扣分。
当做出题不加减分后,后面如果还做题了,做的题只要符合加减分条件时,后续题数会继续加减分。
根据给定的h,和一个题数对错序列(由d表示对c表示错),长度不超过100,求出最后得分。

 

输入

第一行,h 和 s第二行, 长度不超过100的对错字符串,串中仅包含d或c字母

 

输出

输出最后得分

样例输入

9 1
cdccdd

样例输出

2

样例数据分析:
 

最高可得9分,探测器在1分处,字符u代表向上1米,探测器上浮到0米处
字符d代表向下1米,答题者下降到1米处
字符c代表向上1米,答题者上升到0米处
字符c代表向上1米,答题者已经在最高分,不能上升,依然在0米处
字符d代表向下1米,答题者下降到1米处
字符d代表向下1米,答题者下降到2米处
最终结果为2。

题解:

这道题跟水下探测器,类似,明明是一模一样。

基础语法,字符串,循环,条件判断。

解释了一下数据,这题看起来就十分简单了(✺ω✺)。

源代码:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int h,s;
	string str;
	cin>>h>>s>>str;
	for(int i=0; i<str.size(); i++) {
		if(str[i]=='c') {
			if(s>0) {
				s--;
			}
		} else {
			if(s<h) {
				s++;
			}
		}
	}
	cout<<s<<endl;
	return 0;
}

AC

猜你喜欢

转载自blog.csdn.net/m0_45682806/article/details/105047522