院校机试刷题第九天:P1042乒乓球、回顾代码随想录第二天
定位一下刷题计划:刷题全面——代码随想录过一遍,刷到模拟题——刷洛谷普及组-。所以还是每天刷一个代码随想录,外加两道洛谷,题目先从官方题单【算法1-1】开始。
一、P1042乒乓球
1.解题思路
关键点1:输入形式
输入每一行的字符长度都不确定,但是其实和输入的是第几行没有任何关系,只需要将所有输入的字母统计出来即可,最后遇到E就结束。
关键点2:如何统计结果
判断的结果只有两种方式:max(A,B) > 分制 或 abs(A - B)> 2,满足这个条件输出结果,结束本次统计进入下一次统计即可。
关键点3:一次输入统计两次结果
用string把输入的字符统计保存下来即可。
2.代码
注意题目中给出的“当一局比赛结束后,下一局立刻开始”,这也就是说一局结束之后,输出比分,下一局的比分也会有,无论下一局双方得分了没有。
#include <iostream>
#include <string>
using namespace std;void result(int fenzhi, string s) {int A = 0;int B = 0;for(int i = 0; i < s.size(); i++) {if(s[i] == 'W') {A++;} else if(s[i] == 'L') {B++;}if((max(A, B) >= fenzhi) && (abs(A - B)) >= 2) {printf("%d:%d\n", A, B);A = 0;B = 0;}}printf("%d:%d\n", A, B);/*if(A != 0 || B != 0) {printf("%d:%d\n", A, B);}*/return;
}int main() {string s;char c;while(cin >> c) {if(c == 'E') {break;}s += c;}result(11, s);printf("\n");result(21, s);return 0;
}
二、代码随想录第二天
回顾了滑动窗口和单独确定前闭后开的题目。要注意滑动窗口的while条件,具体注意事项已经更新在“代码随想录算法训练营第二天”原文中了。