zoukankan      html  css  js  c++  java
  • 蓝桥

    公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
    程序输入:
    第一行是一个整数m,代表可购买的商品的种类数。
    接下来是m个整数,每个1行,分别代表这m种商品的单价。
    程序输出:
    第一行是一个整数,表示共有多少种方案
    第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
    例如:
    输入:
    2
    200
    300
    则应输出:
    2
    2 2
    5 0
    输入:
    2
    500
    800
    则应输出:
    1
    2 0

    要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。
    对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性;不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

    #include<iostream>
    #include<cstring>
    #include<string>
    using namespace std;
    int count[1000];
    int price[1000];
    int ans[1000][1000];int num,n;
    void dfs(int cnt,int sum,int money)
    {
        int i;
        if(money==sum)
        {
            for(i=0;i<n;i++)
                ans[num][i] = count[i];
            ++num;
            return ;
        }
        if(sum>money || cnt>=n)
            return ;
        sum += price[cnt];
        ++count[cnt];
        dfs(cnt,sum,money);
        sum -= price[cnt];
        --count[cnt];
        dfs(cnt+1,sum,money);
    }
    int main()
    {
        
        
        while(scanf("%d",&n)!=EOF)
        {
            int sum=0,i,j;num =0 ;
            for(i=0;i<n;i++)
            {
                scanf("%d",&price[i]);
            }
            dfs(0,0,1000);
            cout<<num<<endl;
            for(i=0;i<num;i++)
            {
                for(j=0;j<n;j++)
                    printf("%d ",ans[i][j]);
                cout<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    angularjs 中使用 service 在controller 之间 share 对象和数据
    angularjs 中实现 load more 功能
    MVC 中对返回的 data 进行压缩
    linq中如何合并多个predicate条件
    mysql安装常见问题
    Ehcache的CacheManager的使用
    Java Web开发——Filter过滤器
    Java Web开发——Servlet监听器
    JSP内置对象
    JSP指令与动作
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/3603418.html
Copyright © 2011-2022 走看看