| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3130 人关注过本帖
标题:帮忙看看这条题如何做
只看楼主 加入收藏
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
帮忙看看这条题如何做
我网上看到的,连题意也没有弄懂,尤其是输入输出实例哪里。请大家帮忙看看能否明白,谢谢。

https://www.

题目描述
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:

给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。



现给定数字,请编写程序输出能够组成的最小的数。

输入描述:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空

格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。


输出描述:
在一行中输出能够组成的最小的数。

输入例子:
2 2 0 0 0 3 0 0 1 0

输出例子:
10015558
搜索更多相关主题的帖子: 编写程序 如何 网上 
2017-02-14 15:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned ns[10];
    scanf( "%u%u%u%u%u%u%u%u%u%u", ns+0,ns+1,ns+2,ns+3,ns+4,ns+5,ns+6,ns+7,ns+8,ns+9 );

    for( size_t i=1; i!=10; ++i )
    {
        if( ns[i] )
        {
            --ns[i];
            putchar( '0'+i );
            break;
        }
    }

    for( size_t i=0; i!=10; ++i )
        for( size_t j=0; j!=ns[i]; ++j )
            putchar( '0'+i );

    putchar( '\n' );
    return 0;
}
2017-02-14 15:36
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 2楼 rjsp
起初我都以为是10个数组的大小,但下面这句:
"10个数字的总个数不超过50。"

这里的意思是0~9共10个数字,长度不超过50。因此输入的数据多少是不确定的。。。。

更让我不懂的是下面的讲解与实例:

给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。    //这里说了00115558的组成

输出描述:
在一行中输出能够组成的最小的数。

输入例子:
2 2 0 0 0 3 0 0 1 0    //这里的输入例子也不对上面的,结果却一样,算是打印错把。我按照认为正确的方式去做 1000000223

输出例子:
10015558


但最后我提交代码的时候,它提示:

您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为0.00%

测试用例:
1 3 2 0 0 7 0 4 3 3

对应输出应该为:

10112255555557777888999    //这个结果什么鬼????????????

你的输出为:

1000233347

[此贴子已经被作者于2017-2-14 15:53编辑过]

2017-02-14 15:44
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
下述代码提交试试
程序代码:
#include <stdio.h>
void main()
{
    int a[10],i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=1;i<10;i++)
    {
        if(a[i])
        {
            printf("%d",i);
            a[i]--;
            i=-1;
        }
    }
    printf("\n");
}

2017-02-14 16:18
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
回复 3楼 kin3z
输入的数字是该位数字的个数,且总和不超过50:

2 2 0 0 0 3 0 0 1 0
对应
0 1 2 3 4 5 6 7 8 9
就是2个0,2个1,0个2,0个3......1个8,0个9,并且2+2+0+0......+1<=50
2017-02-14 16:43
大秦嬴
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:31
注 册:2016-11-30
收藏
得分:3 
#include <stdio.h>
void main()
{
    int a[10],i,sum=0;
    while(1)
    {
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        for(i=0;i<10;i++)
            sum+=a[i];
        if(sum<=50&&(a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||a[7]||a[8]||a[9]))
        {  
            for(i=1;i<10;i++)
                if(a[i])
                {
                    printf("%d",i);
                    a[i]--;
                    i=-1;
                }
            printf("\n");
        }
    else
    break;
    }
    return 0;
}
2017-02-14 20:13
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 6楼 大秦嬴
把求和放在数据输入时做,可少做一次循环,判断数据是否合格只要if(sum<=50&&sum>0)即可,无需每个数组元素都做判断。
2017-02-14 20:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
敲代码累了~放松一下~来灌水~
感觉题目对输入的合法性判断是默认的~因此九九就没有管了~
这个小练笔感觉不错~

程序代码:
#include<stdio.h>
int main()
{
    int a[10]={0};
    char c[51]={0};
    int i=0;
    int j=0;

    for (i=0;i!=10;++i)
        scanf("%d",&a[i]);

    for (i=1;a[i]==0&&i!=10;++i);

    c[j++]=i+'0';
    --a[i];

    for (i=0;i!=10;++i)
        for (;a[i]--;c[j++]=i+'0');

    puts(c);

    return 0;
}


[此贴子已经被作者于2017-2-14 21:47编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-14 21:24
大秦嬴
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:31
注 册:2016-11-30
收藏
得分:0 
回复 7楼 xzlxzlxzl
知道了,谢谢大神指点
2017-02-15 12:07
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 4楼 xzlxzlxzl
不好意思,晚回复,提交提示:

2017-02-15    0    运行超时   个位数统计 (15)       C++    1001    8460

图片附件: 游客没有浏览图片的权限,请 登录注册


2017-02-15 14:29
快速回复:帮忙看看这条题如何做
数据加载中...
 
   



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

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