题解
难度:简单
知识点:数学逻辑 字符串
方法一
思路:
1.把n个数存放到数组a[55]中,定义变量max存在最终获得的最大数,sum存放每个数a[i]重新排序之后的数。
2.为了得到sum值,首先依次得到a[i]每一位上的数字,此处通过while循环,通过除以10求余数依次得到该数的最低位。将得到的数存放在数组b中,采用sort进行排序,再通过一层循环得到数字sum。
例
a[0]: 9638
while循环:
#include<iostream> #include<algorithm> using namespace std; int main(){ int n,a[55]; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } int max=0; for(int i=0;i<n;i++){ int b[6]; int j = 0; while(a[i]){ b[j++] = a[i] % 10; a[i] /= 10; } sort(b,b+j); int sum=0; for(int k=0;k<j;k++){ sum = sum*10 +b[k]; } if(max<sum) max=sum; } cout<<max; return 0; }
方法二(字符串)
思路
1.将每一个x[i]用字符串x来保存,对字符串x中的字符进行重新排序。
2.调用C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型),将值与Max进行比较,将较大者赋值给Max。
【注】atoi()函数需要引入都文件#include<stdlib.h>
#include<stdlib.h> #include<iostream> #include<string> #include<algorithm> using namespace std; int main(){ int n,i,Max=-1; for(cin>>n,i=0;i<n;i++){ string x; cin>>x; sort(x.begin(),x.end()); Max=max(Max,atoi(x.c_str())); } cout<<Max<<endl; return 0; }