m0_67597520
2022-05-06 20:44
采纳率: 86.4%
浏览 43

输出前二排错误,求解

输入:6634 9796 435 1405 6123 10001 11459 12018 10372 19874 12860 11326 7096 30205 27010
输出:
12860 27010 10001 10372 6123 6634 19874 435 1405 30205 9796 11326 7096 12018 11459
10001 1405 30205 27010 12018 6123 11326 6634 435 11459 12860 10372 19874 9796 7096
10001 27010 12018 7096 6123 30205 11326 10372 1405 435 11459 6634 9796 12860 19874
10001 30205 10372 435 11326 1405 11459 12018 12860 6123 6634 27010 7096 9796 19874
435 1405 6123 6634 7096 9796 10001 10372 11326 11459 12018 12860 19874 27010 30205
输入为15个不超出int数值范围的非负整数。
输出每次分派收集之后得到的一维数组,每个整数之间以空格隔开。每次输出占一行。(注意每行末尾有1个空格)
输出前二排错误,求解

#include <bits/stdc++.h>
using namespace std;
 
int d[100010];
vector<int> v[15]; 
vector<int> v2;
int main()
{
    int n=15, ma = 0;
    for(int i = 0; i < n; i++){
        cin>>d[i];
        int t = d[i], cnt = 0;
        while(t){
            t /= 10;
            cnt++;
        }
        if(ma < cnt)
            ma = cnt;
    }
    for(int i = 0; i < n; i++){
        v[d[i]%10].push_back(d[i]);
    }
    for(int i = 0; i < 15; i++)
        for(int j = v[i].size()-1; j >= 0; j--)
            v2.push_back(v[i][j]);
    cout<<v2[0];
    for(int i = 1; i < v2.size(); i++)
        cout<<' '<<v2[i];
    cout<<' '<<endl;
    int cnt = 0;
    if(cnt == ma-1)
        return 0;
    while(1){
        vector<int> v3[15];
        cnt++;
        for(int i = 0; i < v2.size(); i++){
            int t = v2[i];
            for(int j = 0; j < cnt; j++)
                t /= 10;
            v3[t%10].push_back(v2[i]);
        }
        v2.clear();
        for(int i = 0; i < 15; i++)
            for(int j = 0; j < v3[i].size(); j++)
                v2.push_back(v3[i][j]);
        cout<<v2[0];
        for(int i = 1; i < v2.size(); i++)
            cout<<' '<<v2[i];
        cout<<' '<<endl;
        if(cnt == ma-1)
            return 0;
    }
 } 
 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题