如果不太麻烦的话,请告诉我为什么会出现运行时错误。问题:给定一个代码,该代码接收由 1 和 0(没有前导零)组成的正整数序列,并按数字中 1 的数量降序对其进行排序。具有相同单位数的数字必须按值的升序排序。输入格式:输入数据第一行指定序列1≤n≤1000中的数字个数。第二行输入数据包含n个仅由零和一组成的数字1≤ai≤1111111111。数字之间用空格分隔。输出格式:排序的数字序列,以空格分隔。该程序成功通过了 Yandex 竞赛的 4 项测试,但在第 5 项测试中返回了运行时错误。
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
int calc (std::string numbers)
{
int count = 0;
long int n = std::stoi (numbers);
while (n)
{
if (n%10 == 1)
count ++;
n/=10;
}
return count;
}
bool compare (std::string &left, std::string &right)
{
if (calc (left) == calc (right))
{
return std::stoi(left) <= std::stoi(right);
}
return calc(left) > calc(right);
}
int main(){
int count;
std::cin >> count;
std::vector<std::string> nums(count);
for(auto& line : nums) std::cin >> line;
std::sort(nums.begin(), nums.end(), compare);
for(auto& line : nums) std::cout << line << ' ';
}