UVA10905: Children's Game(排序)

题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/A

题目需求:,给n个数字,将它们重新排序得到一个最大的数字,好像给出123 456 789 拼为 789456123 最大

这题可以算是一个排序题,不过排序的规则有讲究

如果想用字典序排序,显然错了,好像999123 999 , 按字典序排序999123在前面,得到的数字为999123999 , 显然没有不够999999123 大

题目解析:冒泡排序,首先先按字典序排序,这样可以使冒泡排序的交换次数大大减小。

如果有两个数90 9,如果按字典序排序则90>9,此时比较strcat(“90”,“9”)与(“9”,”90“)的大小,使大的与小的位置交换。具体操作请看代码,一看就会明白什么意思的。

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <queue>
#define eps 1e-9
typedef long long ll;
using namespace std;
int n;
char str[101];
char a[60][101];
char s2[202],s3[202];
int cmp(const void *a,const void *b)
{
     return strcmp((char *)b,(char *)a);
}
int main()
{
    while(scanf("%d",&n)!=EOF&&n!=0)
    {
        for(int i=0;i<n;i++)
            scanf("%s",a[i]);
        qsort(a,n,sizeof(a[0]),cmp);
        for(int i=1;i<n;i++)
        {
            for(int j=0;j<n-i;j++)
            {
                strcpy(s2,a[j+1]);
                strcat(s2,a[j]);
                strcpy(s3,a[j]);
                strcat(s3,a[j+1]);
                if(strcmp(s2,s3)>0)
                {
                    strcpy(str,a[j]);
                    strcpy(a[j],a[j+1]);
                    strcpy(a[j+1],str);
                    //printf("%s %s\n",a[j],a[j+1]);
                }
            }
        }
        for(int i=0;i<n;i++)
        {
            printf("%s",a[i]);
        }
        cout<<endl;
    }
    return 0;
}

UVA10905: Children's Game(排序)

时间: 2024-11-04 13:04:35

UVA10905: Children's Game(排序)的相关文章

UVA10905 Children&#39;s Game

There are lots of number games for children. These games are pretty easy to play but not so easy to make. We will discuss about an interesting game here. Each player will be given N positive integer. (S)He can make a big integer by appending those in

贪心专题(不定期更新)

1.UVa 10382 - Watering Grass (贪心-区间覆盖) 题意:一块矩形草坪,给出若干个分布在中轴线上的喷水装置,喷水范围为圆形.问能否覆盖整个草坪,若能,求出最少的喷水装置数目. 思路:圆形半径小于等于草坪宽度一半的不用考虑:在剩下的喷水圆形区域中,求出对应覆盖草坪的矩形区块,之后则进行贪心处理:找出矩形区块[L,R]左侧L小于等于当前已覆盖区域的右侧POS的区块中,右侧R最大的那个,同时更新POS. 1 #include<iostream> 2 #include<

【一坨理论AC的题】Orz sxy大佬

1.UVA10891 Game of Sum 2.LA4254 Processor . 3.UVA10905 Children's Game 4.UVA11389 The Bus Driver Problem 5.LA4094 WonderTeam

定时器的实现原理及参考

如果让你来实现一个定时器的功能,简单点就是,每隔n秒,去执行一次A任务,你打算怎么实现? 我觉得一般都能想到,使用一个死循环,然后每次循环比较时间,时间到了就去执行A任务就好了.但是这样会不会有问题?每次循环会不会性能消耗太大?别人都是怎么做的?如果有语言提供的工具,那我自然更加相信他而不是自己去实现. 好吧,用编程语言自身提供的工具一般情况下自然是比较明智的选择,因为别人本来就比你厉害啊. 那么,java中的定时器?不用说,timer.是怎么做的呢?他到底比自己好在哪里,他肯定是用了什么我不知

UVA - 10905 - Children&#39;s Game (简单排序)

UVA - 10905 Children's Game Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description 4thIIUCInter-University Programming Contest, 2005 A Children's Game Input: standard input Output: standard output Problems

uva 10905 Children&#39;s Game(排序或者有点贪心)

今天配置vim没有成功,老是显示什么error,唉,其实之前成功过的,只不过是重装了dev,然后就变了,可能环境 变量的问题,但是我都改了的啊,以后再调吧... 这道题其实不是我想出来的看的题解,又看题解了...好吧,既然看了题解就得好好掌握才是.用到了我刚刚在 c++ primer里面学的string类,挺好用的,以后我准备写程序尽量用c++内容,多练练.. 又加深理解了qsort调用的cmp函数,它的两个参数其实都是要比较的元素的指针,比如这道题中的元素是string类 型,那么他们都是st

【字符串排序,技巧!】UVa 10905 - Children’s Game

There are lots of number games for children. These games are pretty easy to play but not so easy to make. We will discuss about an interesting game here. Each player will be given N positive integer. (S)He can make a big integer by appending those in

Jquery实现上下移动排序---兰

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <ti

HDU 4001 To Miss Our Children Time (动态规划)

To Miss Our Children Time Problem Description Do you remember our children time? When we are children, we are interesting in almost everything around ourselves. A little thing or a simple game will brings us lots of happy time! LLL is a nostalgic boy