| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1176 人关注过本帖
标题:出一题,娱乐一下。
只看楼主 加入收藏
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:9 
程序代码:
#include<stdio.h>

int store[32] = {0};

int foo()
{
    int i, j, k, a[10] = {0}, flag = 1, result = 0;
    scanf("%d",&i);
    i<0?(i*=-1,flag=-1):1;
    for (j=0; i>0; store[j]=i%10,i/=10,a[store[j++]]++);
    for (k=1; k<10; k++)
        for (j=0; j<a[k]; j++) result = 10*result+k;
    return flag*result;
}

void main()
{
    printf("result = %d\n",foo());
}


向杨大哥学习~
2012-07-30 10:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 11楼 demonleer
恩,计数排序,其实不必处理负数。

My life is brilliant
2012-07-30 10:52
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:9 
这玩意 显然 就是个字符排序就能搞定了。

有技术含量?
2012-07-30 10:52
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:9 
学习了,接个分,鼓励下呀~~~
2012-07-30 10:53
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>

int main(void)
{
    int table[10] = { 0 }, n, i, j;
    scanf("%d", &n);
    while (n) {
        ++table[n % 10];
        n /= 10;
    }
    for (i = 1; i < 10; ++i)
        for (j = 0; j < table[i]; ++j)
            printf("%d", i);
    return 0;
}
其实最好的思路就是计数排序。

My life is brilliant
2012-07-30 10:53
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:9 
思路都出来了,那我也感谢你们啊,呵呵。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2012-07-30 10:55
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 13楼 Devil_W
仅仅只是娱乐,本来就没什么技术可讲。

My life is brilliant
2012-07-30 10:56
你的远走高飞
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2012-6-13
收藏
得分:0 
我也给一道题:求一个整数(正负都行)中各位相同的数,如:456786,相同的有6;234568745中相同的有4和5;4567765中相同的有5、6、7。要求:int型,输出有相同的数。

程序就是我,我就是程序。梁肇新说的
2012-07-30 12:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
高难度的题目可以用来练习算法分析能力。低难度的题目可以用来练习代码描述能力。

娱乐嘛,无所谓难度高低,想做就做。

我很赞同施鹏对负数的处理,这说明他对问题的考虑很全面。至少在他写代码前李志还没有强调负数不必考虑。

最后以代码配合一下李志的娱乐,也和大家交流一下编码技巧方面的心得。
程序代码:
#include<stdio.h>

int trans(int n)
{
    int a[10] = {0}, r = 0, i;
    for(; n; n /= 10) a[n % 10]++;
    for(i = 1; i < 10; a[i]-- ? r = r * 10 + i : i++);
    return r;
}

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n", trans(n));
    return 0;
}


 

重剑无锋,大巧不工
2012-07-30 13:14
快速回复:出一题,娱乐一下。
数据加载中...
 
   



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

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