Problem Description

All the shops use discount to attract customers, but some shops doesn’t give direct discount on their goods, instead, they give discount only when you bought more than a certain amount of goods. Assume a shop offers a 20% off if your bill is more than 100 yuan, and with more than 500 yuan, you can get a 40% off. After you have chosen a good of 400 yuan, the best suggestion for you is to take something else to reach 500 yuan and get the 40% off.
For the customers’ convenience, the shops often offer some low-price and useful items just for reaching such a condition. But there are still many customers complain that they can’t reach exactly the budget they want. So, the manager wants to know, with the items they offer, what is the minimum budget that cannot be reached. In addition, although the items are very useful, no one wants to buy the same thing twice.
Input
The input consists several testcases.
The first line contains one integer N (1 <= N <= 1000), the number of items available.
The second line contains N integers Pi (0 <= Pi <= 10000), represent the ith item’s price.
Output
Print one integer, the minimum budget that cannot be reached.
Sample Input
4
1 2 3 4
Sample Output
11
思路
题意就是用所给的数找出最小的不能组合出的数
代码
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define MAX 1005
int main()
{
int n;
while(~scanf("%d",&n))
{
int p[MAX],re[MAX],i;
for(i=1;i<=n;i++)
scanf("%d",&p[i]);
sort(p+1,p+n+1);
memset(re,0,sizeof(re));
for(i=1;i<=n;i++)
re[i]=re[i-1]+p[i];
for(i=1;i<=n;i++)
{
if(p[i]>re[i-1]+1)
break;
}
printf("%d\n",re[i-1]+1);
}
return 0;
}
本文探讨了一种算法问题,即如何找到使用一组商品价格无法达到的最小预算值。通过分析商品价格列表,算法确定了顾客在享受特定折扣时无法触及的最低预算。此问题对于优化商店折扣策略和理解顾客购买行为具有重要意义。
119

被折叠的 条评论
为什么被折叠?



