C++实现按数字位数递增排列

来源:互联网 发布:易语言qq好友验证源码 编辑:程序博客网 时间:2024/06/02 05:40

输入n个数(n小于50),对于每个数字(小于100000)按照其位数递增排列,得到新的数字的前缀0将被忽略,求解最大的数字?

例  输入:3(n=3)
               4562   7810     3159  (排列后为2456  178  1359 ,从中选出最大的数)
     输出:2456

#include<iostream>#include <math.h>#include <algorithm>#include<vector>using namespace std;int main(){int  n;cin >> n;vector<int>a(n);vector <int>s;for (int i = 0; i < n; i++)cin >> a[i];for (int i = 0; i<n; i++){int num = a[i];int j = 0;while (num){  s[j++] = num % 10;  num = num / 10;}  sort(s, s.end);a[i] = 0;for (int k = 0; k<s.size(); k++){if (s[k] != 0){a[i]+= s[k] * pow(10, 5-k);}}}int max = a[0];for (int m = 0; m<n; m++){if (a[m] >= max)max = a[m];}cout << max;system("pause");return 0;}




原创粉丝点击