题目描述
算出输入数字的朋友数,并将不同的朋友数输出。
题目分析
输入的数字中包含空格,所以不能简单的输入,而应该通过getline来输入字符串。
在getline之前应该用getchar获取cin>>n之后的空格。
遍历输入的字符串,如果不是空格,就转变为对应的ASCII码并加和得到sum,遇到空格就将前面的sum放入一个vector数组中,并将sum置为0,继续遍历。但是最后一个数字不能被加入,所以我们要单独把他加入。
将vector从小到大排序,遍历找出其中相邻不相等的元素加入到另一个vector,并计数。
这个vector就是我们最终的所有朋友数。将其遍历输出即可。
代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
string s;
getchar();//获取到cin>>n的回车
getline(cin,s);
vector<int>sum_;
vector<int>res;
int sum = 0;
for(int i = 0;i < s.length();i++)
{
if (s[i]!=' ')
{
sum += s[i] - '0';
}
else
{
sum_.push_back(sum);
sum = 0;
}
}
sum_.push_back(sum);
sort(sum_.begin(),sum_.end());
int count = 1;
res.push_back(sum_[0]);
for(int i = 0;i < sum_.size() - 1;i++)
{
if(sum_[i] != sum_[i+1])
{
count++;
res.push_back(sum_[i+1]);
}
}
cout<<count<<endl;
for(int i = 0;i < res.size();i++)
{
if(i == 0)
{
cout<<res[i];
}
else
cout<<" "<<res[i];
}
return 0;
}
答题用时13min
Q64——finish√