/*************************
题意:
给出一堆数字
问哪种排列时,数字最小
/************************
求解思路和注意点:
直接用sort,比较方式为 a连接b ,或b连接a时,哪种连接方式数字最小
即利用了string的比较特性直接来处理。
注意点:
小心000 000 0001 这种
************************/
/***********************
笔记:
*********************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
#include<queue>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<stack>
#include<map>
using namespace std;
#define M 10001
#define INF 0x7fffffff
vector<string> vs[11],v;
bool cmp(string a,string b){
return a+b<b+a; //直接根据拼接时,那个组合小来决定顺序。
}
int main(){
int n,i,j;
scanf("%d",&n);
string s;
for(i=0;i<n;i++){
cin>>s;
v.push_back(s);
}
int flag;
sort(v.begin(),v.end(),cmp);
flag=1;
string ans;
for(i=0;i<v.size();i++){
ans += v[i];
}
//注意前导0处理
for(i=0;i<ans.size();i++){
if(flag && ans[i]=='0')
continue;
else {
flag=0;
cout<<ans[i];
}
}
if(flag==1)
cout<<'0';
cout<<endl;
return 0;
}
PAT 1038. Recover the Smallest Number (30) 排序题
最新推荐文章于 2020-07-31 16:25:22 发布