码迷,mamicode.com
首页 > 其他好文 > 详细

[2018大华软件创新挑战赛]模拟赛第四题

时间:2018-04-30 23:56:03      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:display   can   close   ali   output   gif   temp   img   opened   

题目 输入 输出 限制 示例

某股票操盘手账户里有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 
 3 int result[100000];
 4 int count;
 5 
 6 void combination(int* arr,int i,int cnt)
 7 {
 8         if(i >= cnt)
 9         {
10                 int sum = 0;
11                 for(int j=0; j<cnt; j++)
12                 {
13                         sum += arr[j];
14                 }
15                 for(int j=0; j<count; j++)
16                 {
17                         if(sum == result[j]) return;
18                 }
19                 result[count++] = sum;
20                 return;
21         }
22 
23         int temp = arr[i];
24         arr[i] = 0;
25         combination(arr,i+1,cnt);
26         arr[i] = temp;
27         combination(arr,i+1,cnt);
28 }
29 
30 int main()
31 {
32         int t = 0;
33         scanf("%d",&t);
34         while(t--)
35         {
36                 int n = 0;
37                 scanf("%d",&n);
38 
39                 int val[n];
40                 for(int i=0; i<n; i++)
41                 {
42                         scanf("%d",&val[i]);
43                 }
44 
45                 int num[n];
46                 int cnt = 0;
47                 for(int i=0; i<n; i++)
48                 {
49                         scanf("%d",&num[i]);
50                         cnt += num[i];
51                 }
52 
53                 int arr[n*cnt];
54                 cnt = 0;
55                 for(int i=0; i<n; i++)
56                 {
57                         for(int j=0; j<num[i]; j++)
58                         {
59                                 arr[cnt++] = val[i];
60                         }
61                 }
62                 printf("\n");
63                 combination(arr,0,cnt);
64                 printf("%d \n",count);
65         }
66 }
View Code

【代码效果】:

技术分享图片技术分享图片

[2018大华软件创新挑战赛]模拟赛第四题

标签:display   can   close   ali   output   gif   temp   img   opened   

原文地址:https://www.cnblogs.com/usingnamespace-caoliu/p/8975261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!