我刚接触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'];
}