|
发表于 2022-10-7 12:12:59
|
显示全部楼层
本帖最后由 zhangjinxuan 于 2022-10-8 19:19 编辑
注意N的数据范围:1 ≤ N ≤ 10 ^ 5
你的string数组只开999,10的五次方能装得下就怪了
解决方案:
- string at[100001]; //我喜欢用1...base,所以开100001
复制代码
其实完全没有必要开一个string数组,可以这样子:
- #include <cstdio>
- using namespace std;
- int ac, wa, tle,re;
- int main() {
- char s[3];
- int n;
- scanf("%d", &n);
- while (n--) {
- scanf("%s", s);
- switch (s[0]) {
- case 'A':
- ++ac;
- break;
- case 'W':
- ++wa;
- break;
- case 'T':
- ++tle;
- break;
- case 'R':
- ++re;
- break;
- }
- }
- printf("AC x %d\nWA x %d\nTLE x %d\nRE x %d", as, wa, tle, re);
- }
复制代码
另外,RE是运行时错误,意思是运行时发生了一些很奇怪的错误,常见的错误有:栈溢出,访问不能读写的内存(数组溢出),除零,缓冲区溢出,assert失败等等
TLE才是超时哦
@高山 我认为这才是正解 |
|