我知道我改的和题解一样了,但是为什么对了啊
查看原帖
我知道我改的和题解一样了,但是为什么对了啊
255169
__LePetitPrince__楼主2023/8/17 19:37

Rt.

这是 WA 3 个点的代码:

#include <iostream>
#include <string>
using namespace std;
int n, l, r;
string standard, a;
int maxchange, minchange;
int changenum;
int main() {
	cin >> n >> l >> r >> standard;
	a = standard;
	maxchange = n - l;
	minchange = n - r;
	for (int i = 0; i < n; i++) {
		if (changenum == maxchange) {
			cout << a;
			return 0;
		}
		if (a[i] != 'a') {
			a[i] = 'a';
			changenum++;
		}
	}
	if (changenum >= minchange) {
		cout << a;
		return 0;
	}
	for (int i = n - 1; i >= 0; i--) {
		if (standard[i] != 'b') {
			a[i] = 'b';
			changenum++;
		}
		if (changenum == minchange) {
			break;
		}
	}
	cout << a;
	return 0;
}

这是 AC 代码:

#include <iostream>
#include <string>
using namespace std;
int n, l, r;
string standard, a;
int maxchange, minchange;
int changenum;
int main() {
	cin >> n >> l >> r >> standard;
	a = standard;
	maxchange = n - l;
	minchange = n - r;
	for (int i = 0; i < n; i++) {
		if (changenum == maxchange) {
			cout << a;
			return 0;
		}
		if (a[i] != 'a') {
			a[i] = 'a';
			changenum++;
		}
	}
	if (changenum >= minchange) {
		cout << a;
		return 0;
	}
	for (int i = n - 1; i >= 0; i--) {
		if (standard[i] == 'a') {
			a[i] = 'b';
			changenum++;
		}
		if (changenum == minchange) {
			break;
		}
	}
	cout << a;
	return 0;
}

可以看到仅仅把第 2 个循环里 if 的条件从 standard[i] != 'b' 改成了 standard[i] == 'a',但是为什么除了字符 a 以外的都不用改呢,求大佬指教 UwU

2023/8/17 19:37
加载中...