| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖
标题:新人 简单问题复杂化 oj超时不过 求精简
只看楼主 加入收藏
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
结帖率:81.82%
收藏
已结贴  问题点数:5 回复次数:11 
新人 简单问题复杂化 oj超时不过 求精简
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3
qwe
asd
zxc
样例输出
e q w
a d s
c x z

代码:
#include<stdio.h>
int main()
{
    int count,i;
    char a[10][4],ch;
    scanf("%d",&count);
    for(i=0;i<=count;i++)
        gets(a[i]);

    for(i=1;i<=count;i++)
    {
        if(a[i][0]>a[i][1])
            {
                ch=a[i][0];
                a[i][0]=a[i][1];
                a[i][1]=ch;
            }
        if(a[i][1]>a[i][2])
            {
                ch=a[i][1];
                a[i][1]=a[i][2];
                a[i][2]=ch;
            }

        if(a[i][0]>a[i][1])
        {
            ch=a[i][0];
            a[i][0]=a[i][1];
            a[i][1]=ch;
        }
        
    }

    for(i=1;i<=count;i++)
        printf("%c %c %c\n",a[i][0],a[i][1],a[i][2]);
        
   

    return 0;
}
搜索更多相关主题的帖子: 测试 include count 
2013-02-11 23:26
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:5 
直接在每次输入后就输出,不会判错的
超时的问题还是看看大侠们的吧。。。。。。。。。。
不过你的比较的部分完全可以替换成两个for嵌套(即冒泡排序法)

[ 本帖最后由 心灯甚亮 于 2013-2-11 23:51 编辑 ]
2013-02-11 23:44
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
同学习 共进步

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-02-12 00:00
tiandong18
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-2-11
收藏
得分:0 
2013-02-12 00:01
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 2楼 心灯甚亮
直接输入后输出   结果oj给了这个单词    OutputLimitExceeded     冒泡超时了   所以才改成二维直接三个if去简单比较 大神指条明路啊~
2013-02-12 00:20
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 3楼 不玩虚的
大神该出手时就出手啊~
2013-02-12 00:21
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
你看看提示 不是超时啊
2013-02-12 08:07
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 7楼 心灯甚亮
用冒泡或选择排序都是超时   后来把输出放入那个if的循环就 OutputLimitExceeded了
2013-02-12 10:33
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
直接上代码:你看是不是精简了一点?
程序代码:
#include<stdio.h>
int main()
{
    int count,i,j,n;
    char a[10][4],ch;
    scanf("%d",&count);
    for(i=0;i<=count;i++)
        gets(a[i]);

    for(i=0;i<=count;i++)
    {
        for(j=0;j<2;j++)
            for(n=0;n<2;n++)
        if(a[i][j]>a[i][n+1])
            {
                ch=a[i][n+1];
                a[i][n+1]=a[i][j];
                a[i][j]=ch;
            } 
    }

    for(i=1;i<=count;i++)
        printf("%c %c %c\n",a[i][0],a[i][1],a[i][2]);
       
    

    return 0;
} 

 
2013-02-12 10:59
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 9楼 幽灵X
蟹蟹   知道错哪了   刚改了一下   原来oj是要求输入3时   是要求有三次输入和输出   不是一次性输入三组   一次性输出所有结果考语文~
2013-02-12 11:21
快速回复:新人 简单问题复杂化 oj超时不过 求精简
数据加载中...
 
   



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

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