无法将数字添加到数组中的现有索引



我刚接触C++,不明白这里出了什么问题。此代码是针对CodeForces的问题339A编写的。

我得到了一个未排序的和str输入,输入的数字是1-3(例如1+2+3+2+1(。

我试图找到每个数字的总次数,但当试图求和到数组的索引时,它会溢出或给我一个不相关的数字。

为什么会这样?

示例

Input: 1+2+3+2+1
Output of array: [0, -13008, 5]

我有以下代码:

#include <iostream>
using namespace std;
int main(){
string s;
int arr[3];
cin >> s;
for(int i=0; i<s.size(); i+= 2){
if(s[i] == 1){
arr[0] += 1;
}
else if(s[i] == 2){
arr[1] += 1;
}
else{
arr[2] += 1;
}
}
...

对于初学者,您需要初始化数组

int arr[3] = {};

你需要比较字符,比如

if(s[i] == '1'){

如果您确信s[i]只包含字符"1"-"3",那么您可以编写例如而不是If语句

++arr[s[i] - '1'];

或者你只能使用一个if语句

if ( '1' <= s[i] && s[i] <= '3' )
{
++arr[s[i] - '1'];
}

相关内容

  • 没有找到相关文章

最新更新