小米2019秋招算法笔试题(A) [编程题]小米大礼包

https://www.nowcoder.com/question/next?pid=15241711&qid=325938&tid=43453049

小米2019秋招算法笔试题(A)

[编程题]小米大礼包

小米之家是成人糖果店。里面有很多便宜,好用,好玩的产品。中秋节快到了,小米之家想给米粉们准备一些固定金额大礼包。对于给定的一个金额,需要判断能不能用不同种产品(一种产品在礼包最多出现一次)组合出来这个金额。聪明的你来帮帮米家的小伙伴吧。

输入描述:

输入 N (N 是正整数, N  <= 200)
输入 N 个价格p(正整数, p <= 10000)用单空格分割
输入金额 M(M是正整数,M <= 100000 )

输出描述:

能组合出来输出 1
否则输出 0

输入例子1:

6
99 199 1999 10000 39 1499
10238

输出例子1:

1

 

#include<iostream>
using namespace std;
#define N 2000
#define M 100010
int mian()
{

	int n;
	int price;
	cin>>n;
	cin>>price;
	vector<int> num(n,0);
	bool  dp[N][M] ;//前i个商品能否组成价格j 
	for(int 1=0;i<n;i++)
	{
		cin>>num[i];
		dp[i][0]=true;//可以组成价格零的礼包是肯定的。 
	}
	for(int i=1;i<=n;i++) 
	{
		for(int j=1;j<=price;j++)
		{
			dp[i][j]=dp[i-1][j]||(j>=num[i]&&dp[i-1][j-num[i]]);
		}
	}
   cout<<dp[n][price]<<endl;
   return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值