| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3162 人关注过本帖, 2 人收藏
标题:发个小题目来娱乐下,大家有空的,一起来讨论下,然后贴上你的代码来。。。
只看楼主 加入收藏
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
回复 23楼 御坂美琴
#include <cstdio>




[ 本帖最后由 cosdos 于 2010-9-4 23:56 编辑 ]

—>〉Sun〈<—
2010-09-04 23:48
老村长玩电动
Rank: 2
等 级:论坛游民
帖 子:10
专家分:39
注 册:2010-8-20
收藏
得分:0 
以下是引用御坂美琴在2010-9-4 22:11:31的发言:

标准答案在我手上呢,你想什么时候发答案呀?御坂问道
不理解这话的含义?你自己想到的?你从别的地方看到的?还是......
2010-09-05 06:54
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
以下是引用cosdos在2010-9-4 23:41:19的发言:

代码确实很好。
我认为 御坂美琴 代码写的并不好,只不过是解题思路是最佳的!呵呵

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-05 07:02
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 18楼 maotai
你的程序还是有问题,你再看看:
输入:
5
314
3143
31431
314314
3140
输出:
3143143314314314313140
----------------------------------
像这组输入,我们就用类似于求最大公约数中辗转除法的“辗转比较法”来做比较了!
我“辗转比较法”思路是这样的:
    串1与串2 长度相同,则可以用strcmp来比较;
    但是串1与串2 长度不同的时候,又恰恰在较短串的长度范围内 两串又完全相等,
    那么,将较长串左边与较短串相同的部分拿掉,剩下的再和原来的短串比较
正是因为这样的思路 ,所以,我用了递归来实现“辗转比较”

[ 本帖最后由 jack10141 于 2010-9-5 07:32 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-05 07:17
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:0 
先比较大小再排列
2010-09-05 07:34
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:5 
以下是引用jack10141在2010-9-4 22:59:35的发言:

拜读中。。。
----------------------------------------------------
你的程序的确是正解,也理解了你的关键解题逻辑了,呵呵 学习了!!
----------------------------------------------------
分数不是问题,我在这里也贴出我的代码,大家帮忙测试下,看有疏漏没??
(我用递归实现比较,有些笨...并且主函数也懒得写,借用了别人的)#include  
#include  
#include  
 
int NUM_comp(char *q,char *p)
{
   int i=0;
   while(*(q+i) != '\0' && *(p+i) != '\0' && *(q+i) == *(p+i))i++;
   if( *(q+i) != '\0' && *(p+i) != '\0' && *(q+i) != *(p+i) )
      return (-(*(q+i)-*(p+i)));
   if( *(q+i) == '\0' && *(p+i) != '\0' )
      return NUM_comp((char *)q, (char *)(p+i));
   if( *(q+i) != '\0' && *(p+i) == '\0' )
      return NUM_comp((char *)(q+i),(char *)p);
   if( *(q+i) == '\0' && *(p+i) == '\0' )
      return 0;
}
 
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]), NUM_comp);
        for (i = 0; i < n; ++i) printf("%s ", s);
    }
    return 0;
}

PS:为了使结果具有直观的可读性,我在输出的每个串尾加了个空白符,方便大家判断结果的正确与否!
真是大作, 顶,

我就是真命天子,顺我者生,逆我者死!
2010-09-05 10:40
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
御姐也帖代码了, 学习之

[ 本帖最后由 BlueGuy 于 2010-9-5 10:46 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-09-05 10:41
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 23楼 御坂美琴
你学姐的 在线测评系统有问题。

我就是真命天子,顺我者生,逆我者死!
2010-09-05 10:57
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用jack10141在2010-9-5 07:02:57的发言:

我认为 御坂美琴 代码写的并不好,只不过是解题思路是最佳的!呵呵

莫非你以为写的像你的代码那么多的指针引用才叫好?事实上这里有一个关键的语法点可以让你简化代码并且让代码更清晰的,可能你还不知道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-09-05 10:58
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用BlueGuy在2010-9-5 10:57:13的发言:

你学姐的 在线测评系统有问题。

没有问题吧?论坛上显示测试机的状态是在线的

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-09-05 11:01
快速回复:发个小题目来娱乐下,大家有空的,一起来讨论下,然后贴上你的代码来。 ...
数据加载中...
 
   



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

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