火柴字

来源:互联网 发布:网络黑客高手微信群 编辑:程序博客网 时间:2024/04/28 00:06

问题 F: 火柴字

时间限制: 1 Sec  内存限制: 128 MB
提交: 39  解决: 6
[提交][状态][讨论版]

题目描述

小明得到了一盒火柴,他可以用这些火柴拼成各种数字。假设现有V根火柴,根据拼法的不同,拼成数字i 需要ai根火柴。

请你帮助他拼成最大的数字。

输入

有多个测试用例。
每一种情况下,第一行都包含一个非负整数V(0 ≤V ≤106)。
第二行包含九个正整数a1,a2,……,a9(1≤ai≤105)。

输出

打印出小明可以拼成的最大数字。如果他连拼成一个数字的火柴数量都不够,输出-1。

样例输入

55 4 3 2 1 2 3 4 529 11 1 12 5 8 9 10 6

样例输出

5555533

这道题也是贪心算法的思想吧,我个人理解,应该按字数大小排序而不是数字所消耗的油漆数目,这样增加了题目难度,有很多细节想不全面的!!还给题目本身更增加了难度!

#include<stdio.h>int main(){    int v;    while(scanf("%d",&v)!=EOF)    {        int a[10];        int min=106,i;        for(i=1;i<10;i++)         {            scanf("%d",&a[i]);            if(min>a[i])                min=a[i];        }        if(min>v)        {            printf("-1\n");        }        else        {            for(i=v/min;i>=0;i--)            {                for(int j=9;j>0;j--)                {                    if(v>=a[j]&&(v-a[j])/min>=i)                    {                         printf("%d",j);                        v-=a[j];                        break;                    }                }            }            printf("\n");        }    }    return 0;}


原创粉丝点击