题目:某股票操盘手账户里有N支股票,股价互不等,分别为v1,v2...vn;每支股票的持有股数为m1,m2...mn。

   现在操盘手要回笼资金需要卖出股票,假设卖出价格即为当前股价,请问能回笼多少种不同的资金量。

比如:两支股票,股价分别为10、11,数量为1、2,则能回笼0、10、11、22、21、32,总共6种资金量

输入:输入的第一行指定用例数量T;
      用例的第一行输入股票种类n;
   用例的第二行输入股票的价格,以空格隔开;
   用例的第三行输入股票的数量,已空格隔开;

输出:输出不同资金量的个数

限制: 1<=n<=10
      1<=v<=20
    1<=m<=6

Input:
1
2
10 11
1 2

Output:
6

这道题是个秤砣砝码的问题(动态规划)

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 int fun(int n, int money[], int num[])
  5 {
  6     int allmoney = 0 , i , j;
  7     for(i = 0; i < n; i++)
  8     {
  9         allmoney = allmoney + money[i] * num[i]; //求所有的资金量
 10     }
 11
 12     int flag[10000] = {0}; //判断存在的资金量
 13
 14     flag[allmoney] = 1;
 15     //先计算第0种股票能够得到的资金里量,并且计算0种股票最大的资金量
 16     int tempmoney = 0;
 17     for(i = 0; i <= num[0]; i++)
 18     {
 19         flag[money[0] * i] = 1;
 20     }
 21     tempmoney = money[0] * num[0];
 22
 23     i = 1; //第1种股票
 24     int currentmoney;
 25     int newmoney;
 26
 27     while(i < n)
 28     {
 29         int f[10000] ={0};
 30         for(j = 1; j <= num[i]; j++)
 31         {
 32             //采用试探的方法 逐次加1
 33             for(currentmoney = 0; currentmoney <= tempmoney; currentmoney++)
 34             {
 35                 newmoney = currentmoney + j * money[i];
 36                 if(newmoney > allmoney)
 37                 {
 38                     break;
 39                 }
 40                 if(flag[currentmoney]  && flag[newmoney] == 0
 41                 &&    currentmoney != money[i])
 42                 {
 43                     f[newmoney] =1;
 44                 }
 45             }
 46         }
 47         //更新已经存在的资金量
 48         tempmoney = tempmoney + num[i] * money[i];
 49         for(int p = 0; p <= tempmoney; p++)
 50         {
 51             if(f[p])
 52             {
 53                 flag[p] = f[p];
 54             }
 55         }
 56         i++;
 57     }
 58
 59     //统计数量
 60     int count = 0;
 61     for(i = 0; i < 10000; i++)
 62     {
 63         if(flag[i] == 1)
 64         {
 65             count++;
 66         }
 67     }
 68         return count;
 69 }
 70
 71 int main()
 72 {
 73     int n1, n2;
 74     //int a[20] = {0};
 75     //int b[20] = {0};
 76
 77     scanf("%d",&n1);
 78     for(int k =0; k < n1; k++ )
 79     {
 80         int count = 0;
 81         scanf("%d",&n2);
 82         int *a = (int *) calloc(n2,sizeof(int));
 83         int *b = (int *) calloc(n2,sizeof(int));
 84
 85         for(int i = 0; i < n2; i++)
 86         {
 87             scanf("%d",&a[i]);
 88         }
 89
 90         for(int i = 0; i < n2; i++)
 91         {
 92             scanf("%d",&b[i]);
 93         }
 94         for(int i =0; i < n2 -1; i++)
 95         {
 96             for(int j = 0; j < n2-i -1; j++)
 97             {
 98                 if(a[j] > a[j+1])
 99                 {
100                     int t = a[j];
101                     a[j] = a[j+1];
102                     a[j+1] = t;
103
104                     t = b[j];
105                     b[j] = b[j+1];
106                     b[j+1] =b[j];
107                 }
108             }
109         }
110         count = fun(n2,a,b);
111         printf("%d\n",count);
112     }
113
114     return 0;
115 }

转载于:https://www.cnblogs.com/leezheng/p/8971991.html

2018大华软件大赛模拟赛第4题 (某股票操盘手账户里有N支股票,股价互不等)相关推荐

  1. 6.26CF模拟赛D:黑白条题题解

    6.26CF模拟赛D:黑白条题题解 题目描述 链接 文字描述 题目分析 代码实现 题目描述 链接 6.26CF模拟赛D题 文字描述 D. 黑白条 time limit per test2 s. mem ...

  2. 顶级操盘手的的6大高效自律习惯

    操盘手很喜欢将自己的做单风格分为不同的类型.无论是盘中交易.剥头皮.波段还是一般的日内交易员,他们都会为自己的交易系统感到骄傲.同时这也是KlipC在研讨会上看到大家互问最普遍的问题之一:今日我们列出 ...

  3. 人才辈出各领风骚 中国股市十大操盘手排行榜

    全天下第一条好汉 韩军 中国股市人才辈出,各领风骚三五载,而韩军则是常青树,他很少出现过困境,不像处于排行榜第二位和第三位的魏东.肖建华那样险些被大熊市灭掉.然而业内公认韩军为群雄之首的重要原因有三个 ...

  4. 2022年大数据技能大赛国赛(模块A,B)

    2022年全国职业院校技能大赛(高职组) "大数据技术与应用" 赛项赛卷(1卷) 背景描述 大数据时代背景下,电商经营模式发生很大改变.在传统运营模式中,缺乏数据积累,人们在做出一 ...

  5. 【2018.10.20】noip模拟赛Day3 二阶和

    今年BJ省选某题的弱化版-- 这看起来就没那么难了,有几种方法维护,这里提两种. 第一种(傻逼的我写的) 维护 一维&二维前缀和. 对于一个长度为$m$的序列$b_1,b_2,...,b_m$ ...

  6. 【jzoj】2018.1.30NOIP普及组——模拟赛D组

    @_@ 前言 写博客时间 2018/1/30 22:36. 感想:出数据的dalao我服! 正题 题目1:二项式展开式(jzoj2254) 输入一个整数,求展开(a+b)^n.展开方式为 (a+b)^ ...

  7. 全国绿色计算大赛 模拟赛第三阶段

    挑战任务 在代码世界中遨游是件妙不可言的故事,给开发者推荐新项目.新用户.新世界,有助于增强开源精神,提高开发者乐趣.本关源于国内知名开源社区的一个真实的业务需求,需要基于"绿色计算产业联盟 ...

  8. 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)...

    题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...

  9. 第十二届蓝桥杯大赛模拟赛(第二期)

    填空题 第一题 问题描述 小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个二进制位? 答案提交 ...

最新文章

  1. 测试晶面间距软件_【干货】高分辨TEM晶面间距的测量与标定丨DM软件
  2. JSP复习(二):EL表达式
  3. nullnullDataTable 排序
  4. BZOJ 2288 贪心 +链表
  5. 敏捷软件开发实践-Sprint Setup Meeting
  6. CentOS7安装Redis,全网最快安装教程
  7. 数据结构基础知识(2)
  8. 蓝桥杯——基础练习之字母图形
  9. 30.卷1(套接字联网API)---客户/服务器程序设计规范
  10. Dlib Python 检测人脸特征点 Face Landmark Detection
  11. OpenCasCade由一个基础形状拉伸形成其它形状的问题
  12. 2018年中国区块链产业发展白皮书(附PDF下载)
  13. 迎奥运,20个帮助你塑造体形的网站
  14. Minecraft 1.12.2模组开发(二十一) 物品点击事件(发射火球、召唤生物)
  15. android用代码返回桌面
  16. 【元胞自动机】基于matlab元胞自动机多车道信号交叉口仿真【含Matlab源码 818期】
  17. 飞鱼星方案助山东小城印象实现微信营销
  18. 从《数学之美》中我想到的
  19. 图灵奖得主Yoshua Bengio:用因果打开AI的黑盒
  20. JustLaws 法律文库贡献指南

热门文章

  1. 开源数字媒体资产管理系统:Razuna安装方法
  2. ffmpeg 从内存中读取数据(或将数据输出到内存)
  3. AAC规格(LC,HE,HEv2)及性能对比
  4. win10执行npm出现Error: EBUSY: resource busy or locked 错误解决方法
  5. tomcat重启时保持会话关闭
  6. Idea中上传项目到Github
  7. 搜索,贪心,DP,三者的区别和联系
  8. Kindle一些使用
  9. qoq是什么意思的缩写_有意思,“TTFN”居然是“再见”的缩写词,具体是指什么呢?...
  10. Python入门--多态