牛客题解 | 数字游戏_1
题目
题解
难度:简单
知识点:数学逻辑 字符串
方法一
思路:
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]; j="0;" while(a[i]){ b[j++]="a[i]" % 10; a[i] = } sort(b,b+j); sum="sum*10" for(int k="0;k<j;k++){" +b[k]; if(max<sum) max="sum;" cout<<max; return 0; ``` ##方法二(字符串) ##思路 1.将每一个x[i]用字符串x来保存,对字符串x中的字符进行重新排序。 2.调用c 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 型),将值与max进行比较,将较大者赋值给max。 ###【注】atoi()函数需要引入都文件#include<stdlib.h>
include<stdlib.h>
include
include
include
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<</n;i++){></stdlib.h></n;i++){></n;i++){>

浙公网安备 33010602011771号