| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3162 人关注过本帖, 2 人收藏
标题:发个小题目来娱乐下,大家有空的,一起来讨论下,然后贴上你的代码来。。。
只看楼主 加入收藏
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
结帖率:100%
收藏(2)
已结贴  问题点数:50 回复次数:55 
发个小题目来娱乐下,大家有空的,一起来讨论下,然后贴上你的代码来。。。
【问题描述】
第二节数学课上,老师在黑板上随意写了N个正整数。要求同学们将这N个正整数连成一排,组成一个的多位数,看那个同学组成的数最大。如:
 n=3, 3个正整数 13、312、343。连成最大的正整数为: 34331213。
小A第二次找到了你,请你帮他写程序解决这个问题。
【输入】
第一行: N(N<=1000)
一下共N行,每一行一个正整数,每个数不超过1,000,000,000。
【输出】
一个数,N个数练成的最大数字。
【输入输出样例】
输入:
3
13
312
343
输出:
34331213
搜索更多相关主题的帖子: 代码 娱乐 
2010-09-03 00:32
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
jake 是前辈了

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-03 00:35
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
这几个问题啊!?

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-03 00:59
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
典型的贪心, 没难度

我就是真命天子,顺我者生,逆我者死!
2010-09-03 09:10
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
看来这个分好像今天给不出去了。。。。。。

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-03 18:50
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
回复 楼主 jack10141
这题无难,待我贴上代码.....

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-09-03 19:45
maotai
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2010-9-3
收藏
得分:5 
把整数看成字符串,按字典序从大到小排序,然后输出
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int comp(const void *p, const void *q)
{
    return strcmp((char *)q, (char *)p);
}

int main()
{  
    int n, i;
    char s[1000][11];
    while (scanf("%d", &n) != EOF)
    {
        for (i = 0; i < n; ++i) scanf("%s", s[i]);
        qsort(s, n, sizeof(s[0]), comp);
        for (i = 0; i < n; ++i) printf("%s", s[i]);
    }
    return 0;
}


2010-09-03 20:46
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用maotai在2010-9-3 20:46:26的发言:

把整数看成字符串,按字典序从大到小排序,然后输出#include  
#include  
#include  
 
int comp(const void *p, const void *q)
{
    return strcmp((char *)q, (char *)p);
}
 
int main()
{   
    int n, i;
    char s[1000][11];
    while (scanf("%d", &n) != EOF)
    {
        for (i = 0; i < n; ++i) scanf("%s", s);
        qsort(s, n, sizeof(s[0]), comp);
        for (i = 0; i < n; ++i) printf("%s", s);
    }
    return 0;
}
 
这是错的,你缺少考虑周全,御坂回答道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-09-03 21:32
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 7楼 maotai
用你的程序,我的输入:
5
564
55
56
566
560
输出为:
5665645605655

显然结果不是最大了!
-------------------------------------------
这个问题当成字符串排序问题写代码,思路是正确的,但是排序的依据仅仅依靠strcmp字典,是没办法满足这个问题的要求吧??

[ 本帖最后由 jack10141 于 2010-9-3 22:52 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-03 21:51
maotai
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2010-9-3
收藏
得分:0 
回复 9楼 jack10141
改成这样呢?
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int comp(const void *p, const void *q)
{
    char *a = (char *)p;
    char *b = (char *)q;
    int len1 = strlen(a);
    int len2 = strlen(b);
    int i;
    if (len1 == len2) return strcmp(b, a);
    else if (len1 > len2)
    {
        for (i = 0; i < len2; ++i) if (a[i] != b[i]) return b[i] - a[i];
        if (a[len2] < b[0]) return 1;
        else return -1;
    }
    else
    {
        for (i = 0; i < len1; ++i) if (a[i] != b[i]) return b[i] - a[i];
        if (b[len1] < a[0]) return -1;
        else return 1;
    }
}

int main()
{  
    int n, i;
    char s[1000][11];
    while (scanf("%d", &n) != EOF)
    {
        for (i = 0; i < n; ++i) scanf("%s", s[i]);
        qsort(s, n, sizeof(s[0]), comp);
        for (i = 0; i < n; ++i) printf("%s", s[i]);
        printf("\n");
    }
    return 0;
}


2010-09-04 09:59
快速回复:发个小题目来娱乐下,大家有空的,一起来讨论下,然后贴上你的代码来。 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019966 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved