问题标题: 酷町堂:数字重组

0
0
已解决
李慧敏
李慧敏
新手守护
新手守护

现在给出一个整数n(不超过15位),请你将n中的每位数字取出,并重新组成一个最小的数。新数也应满足整数的常见形式,即除非给定的原数为零,否则重组后得到的新数的最高位数字不应为零。

怎么做,求核心,思路,伪代码

李慧敏在2021-02-28 20:08:07追加了内容

#include<iostream>

#include<string>

using namespace std;

int main(){

string s;

int m,c;

cin>>s;

s+='A';

    for(int i=0;i<s.size();i++){

     if(s[i]>s[i+1]){

        c=s[i];

        s[i]=s[i+1];

        s[i+1]=c;

     }

    }

cout<<s.erase(s.size()-1,1);

return 0;

}

怎么去掉首位的0


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

输入一个数字,将这个数字循环取位数,每一位存进数组里

之后用sort对数组从小到大排序

之后统计数组中0的个数

最后输出

/*输出*/
for(int i=0的个数+1;i<=n;i++){
        cout<<a[i];
        if(i==0的个数+1){
            for(int j=1;j<=0的个数;j++){
                cout<<0;
            }
        }
    }

还要特判如果这个数字为0,输出0

0
沙宸安
沙宸安
高级启示者
高级启示者

如果首位是0,就将首位与第二位调换顺序(试试看可不可以)

沙宸安在2021-02-28 20:12:11追加了内容

不行,如果第二位也是0方法不适用

沙宸安在2021-02-28 20:12:57追加了内容

就是,首位有多少个0,就把它们统统放在第一个不是0的数的后面

我要回答