【发布时间】:2020-12-17 07:20:02
【问题描述】:
我目前正在codeforce 上做一个简单的问题。 基本上,您会得到一个字符串(例如“1+3+2”),并且您必须将其排序后返回(例如“1+2+3”)。只会使用 1,2 和 3。
我开始:
#include <iostream>
using namespace std;
int main()
{
string str;
int arr[4];
cin >>str;
for(int i = 0; i < str.length();i+=2)
arr[str[i] - '0']++;
}
我的想法是将每个出现的数字存储在一个数组中。但是如果我要添加,我注意到一个问题
cout<< arr[2];
输入“1+2+3”,输出:
33
不过应该是1,因为3只出现过一次。
我通过移动“string str;”解决了这个问题和 "int arr[4]" up, over main:
#include <iostream>
using namespace std;
string str;
int arr[4];
int main()
{
cin >>str;
for(int i = 0; i < str.length();i+=2)
arr[str[i] - '0']++;
cout<< arr[2];
}
输出:
1
为什么它现在起作用了?
【问题讨论】:
-
你应该检查变量初始化。默认情况下,
int包含垃圾