早教吧作业答案频道 -->其他-->
程公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。序输入:第一行是一个整数m,
题目详情
程公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
▼优质解答
答案和解析
#include
#include
int *a,*b;
//int c[20000];
int n;
int count = 0;
void print()
{
int i;
for(i = 0; i < n; i++)
printf("%d ",b[i]);
printf("\n");
}
void problem9(int total,int size)
{
if(size != n )
{
if(total == 0)//判断背包是否正装满
{
count++;//存放可行方案的个数
print();//输出此可行解
}
else
{
problem9(total,size + 1);//未放入物品a【size】的情况
if(total - a[size] >= 0)//判断放入a【size】后,是否会超出背包的承载
{
b[size]++;//使得a【size】对应物品的数量加1
problem9(total - a[size],size);//放入物品a[size]的情况
b[size]--;//使得相应的物品数量减1
}
}
}
}
void main()
{
int i,j;
scanf("%d",&n);
a = (int*)malloc(sizeof(int) * n);
b = (int*)malloc(sizeof(int) * n);
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
for(j = 0; j < n; j++)
b[j] = 0;
problem9(1000,0);
printf("%d",count);
}
#include
int *a,*b;
//int c[20000];
int n;
int count = 0;
void print()
{
int i;
for(i = 0; i < n; i++)
printf("%d ",b[i]);
printf("\n");
}
void problem9(int total,int size)
{
if(size != n )
{
if(total == 0)//判断背包是否正装满
{
count++;//存放可行方案的个数
print();//输出此可行解
}
else
{
problem9(total,size + 1);//未放入物品a【size】的情况
if(total - a[size] >= 0)//判断放入a【size】后,是否会超出背包的承载
{
b[size]++;//使得a【size】对应物品的数量加1
problem9(total - a[size],size);//放入物品a[size]的情况
b[size]--;//使得相应的物品数量减1
}
}
}
}
void main()
{
int i,j;
scanf("%d",&n);
a = (int*)malloc(sizeof(int) * n);
b = (int*)malloc(sizeof(int) * n);
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
for(j = 0; j < n; j++)
b[j] = 0;
problem9(1000,0);
printf("%d",count);
}
看了 程公司发了某商店的购物券10...的网友还看了以下:
初一英语作文.有些人喜欢在网上购物,网上购物方便快捷,去商店购物可以亲眼见到.你喜欢哪种购物方式,把 2020-11-22 …
某书店出售一种挂历,每售出1本可获得10元利润.售出一部分后,每本书减价10元出售,全部售完.已知减 2020-12-15 …
某书店出售一种挂历,每售出一本可的得18元利润.售出一部分后每本减价10元出售,全部售完.已知减价出 2021-01-19 …
(1)某书店出售一中挂历,每售出一本可获得18元利润.售出一部分后,每本减价10元出售,全部售完.已 2021-01-19 …
某书店出售一种挂历,每卖出一本可获得18元利润,书店卖出一部分后每本减价10元,直至全部卖完,已知出 2021-01-19 …
1某书店出售一种挂历,每卖出1本可获得18元利润.书店卖出一部分后,每本减价10元,直至全部卖完.已 2021-01-19 …
某书店出售一种挂历,每售出1本可获得18元利润,售出一部分后,每本降价10元出售,全部售完.已知降价 2021-01-19 …
某书店出售一种挂历,每售出一本可获得18元利润,售出一部分后,每本降价10元出售,全部售完.已知降价 2021-01-19 …
某书店出售一种挂历,每售出1本可获得18元利润,售出一部分后,每本降价10元出售,全部售完.已知降价 2021-01-19 …
某书店出售一种挂历,每售出1本可获得18元利润,售出一部分后,每本降价10元出售,全部售完.已知降价 2021-01-19 …