SCU 1117 最大整数

原创 2013年12月01日 22:01:42

【问题描述】

设有n个正整数,将他们连接成一排,组成一个最大的多位整数.

例如:n=3时,3个整数13,312,343,连成的最大整数为:34331213

又如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613

【输入】

1行一个正整数L,代表测试数据的组数。

接下来L行,每行第一个是正整数N(1<=N<=6),该行接下来有N个正整数Mi(1<=Mi<=3000)

【输出】

输出L行,每组输入数据输出一行,输出连接成的最大多位数

【样例输入】

2
13 312 343
4 7 13 4 246

【样例输出】

34331213
7424613

题解:用字符串比较,注意有一种情况就是987 和 98 当这个数的第三位没有,则比较另一位数的第三位与第一位孰大孰小来进行排序。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
	int T,n,i,j;
	int b[10];
	char a[3010][5];
	scanf("%d",&T);
	while (T--)
	{
		getchar();
		scanf("%d",&n);
		for (i=0;i<n;i++)
		{
			scanf("%s",&a[i]);
			b[i]=i;
		}
		for (i=0;i<n-1;i++)
			for (j=i+1;j<n;j++)
			{
				int t=0;
				while (1)
				{
					if (a[b[i]][t]=='\0')
					{
						if (a[b[j]][t]>a[b[j]][0])
						{
							int k=b[i];
							b[i]=b[j];
							b[j]=k;
						}
						break;
					}
					if (a[b[j]][t]=='\0')
					{
						if (a[b[i]][t]<a[b[i]][0])
						{
							int k=b[i];
							b[i]=b[j];
							b[j]=k;
						}
						break;
					}
					if (a[b[i]][t]>a[b[j]][t])
						break;
					else if (a[b[i]][t]==a[b[j]][t]) t++;
					else 
					{
						int k=b[i];
						b[i]=b[j];
						b[j]=k;
						break;
					}		
				}
			}
		for (i=0;i<n;i++)
			printf("%s",a[b[i]]);
		cout<<endl;
	}
	return 0;
}


相关文章推荐

SOJ--1117: 最大整数

1117: 最大整数 【问题描述】 设有n个正整数,将他们连接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343,连成的最大整数为:34331213 又如:n=...

求两个正整数的最大公因数算法

  • 2014年11月09日 21:10
  • 31KB
  • 下载

最大整数计算器

  • 2014年04月09日 10:39
  • 13KB
  • 下载

【九度】题目1117:整数奇偶排序

题目描述: 输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。 输入: ...

最大整数问题

  • 2013年03月13日 22:34
  • 203KB
  • 下载

题目1117:整数奇偶排序

题目描述: 输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。 输入: 任意排序的1...

题目1117:整数奇偶排序 C++/Java

题目描述: 输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。 输入: 任意排序的10...

贪心算法----正整数分解问题 和相同,乘积最大

转载自cxm_hy的博客,网址: http://www.cnblogs.com/cxmhy/p/4491009.html?utm_source=tuicool&utm_medium=referral ...

某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。

http://www.mianwww.com/html/2012/11/17432.html PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,...

n个整数中找出连续m个数加和是最大Java版

即上一篇Python版取连续加和最大的整数后,本篇博客带来Java版取连续加和最大的整数。总体的思路入上一次博客中所述,就不在过多的阐述,关键就在于如何应用Java API写出相同逻辑的代码。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SCU 1117 最大整数
举报原因:
原因补充:

(最多只允许输入30个字)