麻烦各位大佬看看哪里出问题了,实在搞不懂
查看原帖
麻烦各位大佬看看哪里出问题了,实在搞不懂
492153
nanzjz1楼主2021/3/30 21:08
#include<iostream>
#include<string>
using namespace std;
int main()
{
	int l=0, m=0,left=0; string str(1001, '1');/*这里开1001位或10001位,当输入是
500 3
150 300
100 200
470 471时效果完全不一样*/
	cin >> l >> m;
	for (int i = 0,u,v; i < m; i++)
	{
		cin >> u >> v;
		str = str.replace(u, v, v - u + 1, '0');
	}
	string str0 = "1";
	for (int i = 1; i <= l; i++)
	{
		if (str.compare(i, i+1, str0)==1)
		{
			left++;
		}
	}
	cout << left;
	return 0;
}

我自己实验一些数据,比如 150 2 5 99 1 57 时输出的是正确的(52) 关于那个compare 不知道为什么 只有第一个输出的是0,其他的时候输出的都是1 当输入给的样例时,会有这样的报错: 此时通过输出检验发现字符串只剩下473位了,但开的是1001位的 当我将1001改为10001,重新输入时不再报错,但输出为 397 然而采用一开始的 150 2 5 99 1 57 仍输出 52

2021/3/30 21:08
加载中...