奇怪的问题又增加了
查看原帖
奇怪的问题又增加了
533488
Immortal_Xiao楼主2021/12/26 21:01

我想问一下,为什么这里用 mapmap 我可以 ACAC44 个点,但开数组就会 RERE 呐?
详情: RuntimeError. Runtime Error. ReceivedReceived signalsignal 11:11: SegmentationSegmentation faultfault withwith invalidinvalid memorymemory reference.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;
}
2021/12/26 21:01
加载中...