今天继续刷牛客真题,输入n个数,对每个数的各个位进行排序组合成新的数,并输出新的数中最大的数。
分析:
1、输入
2、遍历每个数,同时将数的每位存入数组中;
3、对数组按从小到大排序;
4、除去前面的0后,组合成新的数;
5、输出新数的最大的那一个;
问题:
1、排序中,C++使用sort函数,对于数组是sort(a,a+n),对于向量是sort(vector.begin(),vector.end());
2、对于Python中,使用t=sorted(t);
附上C++代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int max_num=0;
for(int i=0;i<n;i++)
{
vector<int> temp;
while(a[i]!=0)
{
temp.push_back(a[i]%10);
a[i]/=10;
}
sort(temp.begin(),temp.end());
int s=0;
for(int j=0;j<temp.size();j++)
{
if(temp[j]!=0)
s=s*10+temp[j];
}
max_num=max(max_num,s);
}
cout<<max_num<<endl;
return 0;
}
附上Python代码:
n=int(input())
A=list(map(int,input().split()))
re=0
for a in A:
li=[]
while a!=0:
li.append(a%10)
a=a//10
li=sorted(li)
s=0
for i in li:
if i!=0:
s=s*10+i
re=max(re,s)
print(re)