我想问一下,为什么这里用
map
我可以
AC
前
4
个点,但开数组就会
RE
呐?
详情:
RuntimeError.
Received
signal
11:
Segmentation
fault
with
invalid
memory
reference.
代码:
#include <bits/stdc++.h>
using namespace std;
bool save[1005];
int main()
{
char c;
int number = 0, cnt = 0;
bool last = false;
while (cin >> c)
{
if (isdigit(c))
{
number = number * 10 + c;
last = true;
}
else if (number != 0 && !save[number])
{
save[number] = true;
cnt++;
number = 0;
}
else if (number == 0 && last && !save[0])
{
save[0] = true;
cnt++;
number = 0;
}
}
cout << cnt << endl;
return 0;
}
用map:
#include <bits/stdc++.h>
using namespace std;
map<int, bool> save;
int main()
{
char c;
int number = 0, cnt = 0;
bool last = false;
while (cin >> c)
{
if (isdigit(c))
{
number = number * 10 + c;
last = true;
}
else if (number != 0 && !save[number])
{
save[number] = true;
cnt++;
number = 0;
}
else if (number == 0 && last && !save[0])
{
save[0] = true;
cnt++;
number = 0;
}
}
cout << cnt << endl;
return 0;
}