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;
}


OJ_1117

#include #include #define N 10 using namespace std; bool comp1(const int &a,const int &b){ retur...
  • jerryzcx
  • jerryzcx
  • 2014年02月22日 19:37
  • 400

ZZULIOJ【1117】查找数组元素【数组】

1117: 查找数组元素 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 5108  Solved: 2732 SubmitStatusW...
  • tian_he_he
  • tian_he_he
  • 2017年08月03日 17:40
  • 452

1117: 查找数组元素

1117: 查找数组元素 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 5202  Solved: 2774 SubmitStatusWeb...
  • zzuli_Acmer
  • zzuli_Acmer
  • 2017年11月06日 16:17
  • 520

zzuli OJ 1117: 查找数组元素

Description 编写程序,输入n(1 素后的数组。如果不存在,输出“Not Found”。 定义一个查找函数find(),在数组a中查找x,若找不到函数返回-1,若找到返回x...
  • sinat_25926481
  • sinat_25926481
  • 2015年11月11日 00:12
  • 3189

题目1117:整数奇偶排序

#include #include #include #include using namespace std; bool cmp(const int a, const int b); ...
  • wuli2496
  • wuli2496
  • 2014年01月01日 12:24
  • 411

scu(snoop control unit)

在ARM芯片上看到SCU这个模块,不知道是什么意思,搜了下,
  • xzongyuan
  • xzongyuan
  • 2014年05月05日 16:07
  • 2754

贪心算法——最大整数问题详解

贪心算法——最大整数问题详解: [最大整数]设有n个正整数,将它们连接成一排,组成一个最大的多位整数。 例如:n=3时,3个整数13,312,343,连成的最大整数为34331213。...
  • John_ToStr
  • John_ToStr
  • 2016年04月06日 14:52
  • 1168

最大整数 贪心***

题目描述设有n个正整数 (n
  • sinat_34943123
  • sinat_34943123
  • 2016年05月12日 09:37
  • 425

js获取最大整数的方法

js获取最大整数的方法 1、Math.max(x1,x2,...) 方法可返回指定的数中带有较大的值的那个数。 参数:0或多个参数 返回值:参数中最大的值。如果没有参数,则返回 -Infi...
  • tangxiujiang
  • tangxiujiang
  • 2017年10月14日 21:56
  • 208

java中最大的整数

8种基本数据类型中,long类型所能表示的整数范围是最大的,但还是有限的。另外,基本数据类型中的整数还有一个问题,那就是不是每个数都能够正确的取负数。例如,对int型而言,“-2147483648”取...
  • qq7342272
  • qq7342272
  • 2011年08月07日 10:46
  • 13040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SCU 1117 最大整数
举报原因:
原因补充:

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