pku_lmc @ 2023-10-20 00:24:21
#include <iostream>
using namespace std;
int main() {
int l = 0, m = 0;
cin >> l >> m;
int ln[10000] = {0};
int a, b, k = 0;
//a,b为每次的首末,k用来计数
for (int i = 1; i <= m; i++) {
cin >> a >> b;
for (; a <= b; a++) {
ln[a] = 1;
}
}
for (int j = 0; j <= l; j++) {
if (ln[j] == 1) k += ln[j];
//if (ln[j] == 1) k ++;
//if (ln[j] != 0) k += ln[j];
//k += ln[j];
//这四种写法有什么区别,为什么只有第一种和第二种可以全部通过,其余两种写法只能通过前三个?
}
cout << l + 1 - k;
return 0;
}
by Lele_S @ 2023-10-20 02:13:29
数组小了,开到10001,前面两种写法正好能过可能是一个巧合
by Lele_S @ 2023-10-20 02:13:41
@pku_lmc
by 262620zzj @ 2023-10-20 06:52:02
数组越界
by sunxy20231016 @ 2023-10-20 08:04:04
前排
by 2789617221guo @ 2023-12-23 20:34:10
有可能是有的元素没有赋初值,即NULL,而NULL又正好不等于0,所以第三个是判断错误。 (本人也是个小蒟蒻,如果有说的不对的地方请谅解AWA)