社区讨论

77 求大佬帮忙看下

P1321单词覆盖还原参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhji44j2
此快照首次捕获于
2025/11/04 02:56
4 个月前
此快照最后确认于
2025/11/04 02:56
4 个月前
查看原帖
代码如下:
CPP
#include<bits/stdc++.h>
using namespace std;
int ans1, ans2;
string s;
void cou() {
	cout << endl << s << "\nans1=" << ans1 << " ans2=" << ans2 << endl;
	return ;
}
int main() {
	cin >> s;
	//boy查找
	//3#
	for (int i = 0; i < s.size() - 2; i++) {
		if (s[i] == 'b' && s[i + 1] == 'o' && s[i + 2] == 'y') {
			ans1++;
			s[i] = '.';
			s[i + 1] = '.';
			s[i + 2] = '.';
		}
	}
//	cout << "3#";
//	cou();
	//2#
	for (int i = 0; i < s.size() - 1; i++) {
		if (s[i] == 'b' && s[i + 1] == 'o') {
			ans1++;
			s[i] = '.';
			s[i + 1] = '.';
		}
	}
	for (int i = 0; i < s.size() - 1; i++) {
		if (s[i] == 'o' && s[i + 1] == 'y') {
			ans1++;
			s[i] = '.';
			s[i + 1] = '.';
		}
	}
//	cout << "2#";
//	cou();
	//1#
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'b') {
			ans1++;
			s[i] = '.';
		}
	}
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'o') {
			ans1++;
			s[i] = '.';
		}
	}
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'y') {
			ans1++;
			s[i] = '.';
		}
	}
//	cout << "1#";
//	cou();
	//girl查找
	//4#
	for (int i = 0; i < s.size() - 3; i++) {
		if (s[i] == 'g' && s[i + 1] == 'i' && s[i + 2] == 'r' && s[i + 3] == 'l') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
			s[i + 2] = '.';
			s[i + 3] = '.';
		}
	}
//	cout << "4#";
//	cou();
	//3#
	for (int i = 0; i < s.size() - 2; i++) {
		if (s[i] == 'g' && s[i + 1] == 'i' && s[i + 2] == 'r') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
			s[i + 2] = '.';
		}
	}
	for (int i = 0; i < s.size() - 2; i++) {
		if (s[i] == 'i' && s[i + 1] == 'r' && s[i + 2] == 'l') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
			s[i + 2] = '.';
		}
	}
//	cout << "3#";
//	cou();
	//2#
	for (int i = 0; i < s.size() - 1; i++) {
		if (s[i] == 'g' && s[i + 1] == 'i') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
		}
	}
	for (int i = 0; i < s.size() - 1; i++) {
		if (s[i] == 'i' && s[i + 1] == 'r') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
		}
	}
	for (int i = 0; i < s.size() - 1; i++) {
		if (s[i] == 'r' && s[i + 2] == 'l') {
			ans2++;
			s[i] = '.';
			s[i + 1] = '.';
		}
	}
//	cout << "2#";
//	cou();
	//1#
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'g') {
			ans2++;
			s[i] = '.';
		}
	}
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'i') {
			ans2++;
			s[i] = '.';
		}
	}
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'r') {
			ans2++;
			s[i] = '.';
		}
	}
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == 'l') {
			ans2++;
			s[i] = '.';
		}
	}
//	cout << "1#";
//	cou();
	cout << ans1 << endl << ans2;
	return 0;
}
自己调过一遍,但找不出为什么会计算一个(样例7 ans2多了1个)

回复

2 条回复,欢迎继续交流。

正在加载回复...