CC++ 算法分析与设计:贪心(连数问题)

xiaoxiao2021-04-15  32

题目描述

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13、312、343连成的最大整数为:34331213。

输入

包含多组测试数据。

每组测试数据的第1行为N(0表示结束),第2行为N个数。

 

输出

连接成的最大整数。 

样例输入

3 13 312 343 0

样例输出

34331213 #include <stdio.h> int CompareInt(int a,int b) { int a1=a,b1=b,la=10,lb=10; while(a/la) { la*=10; } while(b/lb) { lb*=10; } return (a*lb+b)-(b*la+a); } int main() { int i,j,n; int data[20],temp; while(1) { scanf("%d",&n); if(n<=0||n>20) break; for(i=0;i<n;i++) { scanf("%d",&data[i]); } for(j=0;j<n-1;j++) for(i=0;i<n-1-j;i++) { if(CompareInt(data[i],data[i+1])<0) { temp=data[i+1]; data[i+1]=data[i]; data[i]=temp; } } for(i=0;i<n;i++) { printf("%d",data[i]); } printf("\n"); } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-4817808.html

最新回复(0)