首页 > 代码库 > 拼数--洛谷1012
拼数--洛谷1012
分析:转化为字符串,然后按照字典序比较全排列,找出最大的
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cmath> 6 using namespace std; 7 const int maxn=22; 8 string str[maxn]; 9 int a[maxn]; 10 int n; 11 string num; 12 void Rev(string &s){ 13 int i=0,j=s.length()-1; 14 while(i<j){ 15 swap(s[i],s[j]); 16 i++,j--; 17 } 18 } 19 void dfs(int cur){ 20 if(cur==n){ 21 string p=""; 22 for(int i=0;i<n;i++){ 23 p+=str[i]; 24 } 25 if(p>num){ 26 num=""; 27 for(int i=0;i<p.length();i++) 28 num+=p[i]; 29 } 30 } 31 for(int i=cur;i<n;i++){ 32 if(cur!=i&&str[i]==str[cur]) 33 continue; 34 swap(str[i],str[cur]); 35 dfs(cur+1); 36 swap(str[i],str[cur]); 37 } 38 } 39 int main() 40 { 41 while(cin>>n) 42 { 43 for(int i=0;i<n;i++) 44 cin>>a[i]; 45 for(int i=0;i<n;i++){ 46 string s=""; 47 while(a[i]){ 48 s+=a[i]%10+‘0‘; 49 a[i]/=10; 50 } 51 Rev(s); 52 str[i]=s; 53 } 54 num=""; 55 dfs(0); 56 cout<<num<<endl; 57 } 58 }
拼数--洛谷1012
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。