问题描述

张超来到了超市购物。

每个物品都有价格,正好赶上商店推出促销方案。就是把许多东西一起买更便宜(保证优惠方案一定比原价便宜)。物品要买正好的个数,而且不能为了便宜而买不需要的物品。

张超拿到了优惠方案,和需要购买的物品清单,当然想求出最小的花费。他是信息学选手,自然地想到写个程序解决问题。

输入格式

第一行促销物品的种类数(0 <= s <= 99)。

第二行..第s+1 行每一行都用几个整数来表示一种促销方式。

第一个整数 n (1 <= n <= 5),表示这种优惠方式由 n 种商品组成。

后面 n 对整数 c 和 k 表示 k (1 <= k <= 5)个编号为 c (1 <= c <= 999)的商品共同构成这种方案。

最后的整数 p 表示这种优惠的优惠价(1 <= p <= 9999)。也就是把当前的方案中的物品全买需要的价格。

第 s+2 行这行一个整数b (0 <= b <= 5),表示需要购买 b 种不同的商品。

第 s+3 行..第 s+b+2 行这 b 行中的每一行包括三个整数:c ,k ,和 p 。

C 表示唯一的商品编号(1 <= c <= 999),

k 表示需要购买的 c 商品的数量(1 <= k <= 5)。

p 表示 c 商品的原价(1 <= p <= 999)。

最多购买 5*5=25 个商品。

输出格式

一个整数ans,表示需要花的最小费用

样例输入

2

1 7 3 5

2 7 1 8 2 10

2

7 3 2

8 2 5

样例输出

14

思路: 动态规划  完全背包 变形

#include

#include

long int bj(long int a,long int b)

{ return a

}

int main()

{ long int s,i,j,j1,b,ans=0,dans=0,b1,b2,b3,b4,b5;

long int sn[101];//sn[i]第i种促销种类的物品数

long int c[101][7],k[101][7],p[101],xc[7]={0},xp[7]={0},xk[7]={0};

long int dp[6][6][6][6][6];//dp[2][3][4][1][0]代表 当前第 1~5 个物品 分别 购2 3 4 1 0 件所需最少钱

long h[6]={0};//h[i] 表示 i 号商品促销数量

long sbh[1001]={0};//标号表 链接 促销序号和需买序号的桥梁

scanf("%ld",&s);

for(i=1;i<=s;i++)

{

scanf("%ld",&sn[i]);

for(j=1;j<=sn[i];j++)

scanf("%ld%ld",&c[i][j],&k[i][j]);

scanf("%ld",&p[i]);

}

scanf("%ld",&b);

for(i=1;i<=b;i++)

scanf("%ld%ld%ld",&xc[i],&xk[i],&xp[i]);

for(j=1;j<=b;j++)//初始化需求物品的数量 sbh[i] 代表需求品序号 存 需求数量

sbh[xc[j]]=j;

for(b1=0;b1<=xk[1];b1++)

for(b2=0;b2<=xk[2];b2++)

for(b3=0;b3<=xk[3];b3++)

for(b4=0;b4<=xk[4];b4++)

for(b5=0;b5<=xk[5];b5++)

if(b1*xp[1]+b2*xp[2]+b3*xp[3]+b4*xp[4]+b5*xp[5])dp[b1][b2][b3][b4][b5]=b1*xp[1]+b2*xp[2]+b3*xp[3]+b4*xp[4]+b5*xp[5];

dp[0][0][0][0][0]=0; //初始化 原价购买

for(i=1;i<=s;i++)

{

for(j=1;j<=sn[i];j++)

if(xk[sbh[c[i][j]]]

if(j

for(j=1;j<=sn[i];j++)

h[sbh[c[i][j]]]=k[i][j];

for(b1=h[1];b1<=xk[1];b1++)

for(b2=h[2];b2<=xk[2];b2++)

for(b3=h[3];b3<=xk[3];b3++)

for(b4=h[4];b4<=xk[4];b4++)

for(b5=h[5];b5<=xk[5];b5++)

dp[b1][b2][b3][b4][b5]=bj(dp[b1][b2][b3][b4][b5],dp[b1-h[1]][b2-h[2]][b3-h[3]][b4-h[4]][b5-h[5]]+p[i]);

for(j=1;j<=sn[i];j++)

h[sbh[c[i][j]]]=0;

}

ans=dp[xk[1]][xk[2]][xk[3]][xk[4]][xk[5]];

printf("%ld\n",ans);

return 0;

}

购物打折C语言程序设计,算法提高 促销购物(动态规划+完全背包)-----------------C语言——菜鸟级...相关推荐

  1. Java实现 蓝桥杯VIP 算法提高 促销购物

    算法提高 促销购物 时间限制:1.0s 内存限制:256.0MB 问题描述 张超来到了超市购物. 每个物品都有价格,正好赶上商店推出促销方案.就是把许多东西一起买更便宜(保证优惠方案一定比原价便宜). ...

  2. java算法买3瓶送1瓶_Java实现 蓝桥杯VIP 算法提高 促销购物

    算法提高 促销购物 时间限制:1.0s 内存限制:256.0MB 问题描述 张超来到了超市购物. 每个物品都有价格,正好赶上商店推出促销方案.就是把许多东西一起买更便宜(保证优惠方案一定比原价便宜). ...

  3. 北华大学计算机程序设计算法提高训练营个人赛(无L)

    北华大学计算机程序设计算法提高训练营个人赛(无L) 明明是北华大学的训练赛,结果被屠榜了hhh,L防ak题吧这也太难了 A-洛姐打题日记 题目描述 洛姐开开心心地打题,可是她看不懂评测机给的判定结果, ...

  4. 蓝桥杯试题 算法提高 扶老奶奶过街(C语言)

    试题 算法提高 扶老奶奶过街(C语言) 资源限制 时间限制:1.0s 内存限制:256.0MB 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: ...

  5. 如何将计算思维融合到C语言程序设计中,利用案例融合计算思维与C语言教学

    摘 要: C语言程序设计的教学目标是使学生利用C语言结合算法解决简单的实际问题.要实现该目标不仅要熟练掌握C语言本身的基本语法和结构,还要具备设计合理算法的思维能力.然而,当前各高校课程教学往往忽略思 ...

  6. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  7. 全国计算机等级考试二级教程c语言程序设计考试大纲,全国计算机等级考试二级C语言程序设计考试大纲.docx...

    全国计算机等级考试二级C语言程序设计考试大纲 全国计算机等级考试二级C语言程序设计考试大纲(2013版) 基本要求 1.熟悉VisualC++6.0集成开发环境. 2.掌握结构化程序设计的方法,具有良 ...

  8. 超女选秀C语言程序设计,结构体数组 2013年计算机二级C语言程序设计考试大纲...

    2013年是什么年?蛇年吗?答:2013年1月1日-2013年2月9日是农历壬辰年(龙年):2013年2月10日-2013年12月31日是农历癸巳年(蛇年).由于2013年指的是公历年,所以要给它转换 ...

  9. 华南农业大学c语言程序设计实验指导书参考答案,华南农业大学C语言程序设计实验指导书参考答案.doc...

    华南农业大学C语言程序设计实验指导书参考答案 华南农业大学c语言程序设计上机指导书参考答案 上级实验参考答案#include "stdio.h" #include"mat ...

最新文章

  1. Hadoop的基础架构
  2. 算法62---最长回文子序列长度(子串)、回文子序列总共个数(子串)【动态规划】...
  3. 周期均方根和有效值的区别_茅台王子酒和迎宾酒的区别是什么?
  4. 298. Binary Tree Longest Consecutive Sequence
  5. java 序列化工具kryo_java jackson avro kryo等几种序列化与反序列化工具的使用
  6. PHP面试题及答案(一)
  7. Xshell清屏快捷键
  8. python快速编程入门教材免费阅读,Python快速编程入门(第2版)
  9. 【概率论与数理统计 Probability and Statistics 3】—— (important)全概率公式和贝叶斯公式
  10. 米勒拉宾算法(素性测试)
  11. 【Qualcomm】在EFS的NV项中关闭VoLTE高清语音服务
  12. 手把手系列之三十二——手把手教你做香果魔芋
  13. 终身受用的企业网盘文件管理方案!
  14. 推荐一个开源低代码开发平台 Corteza
  15. MNIST数据集学习
  16. 三维偏序/cdq分治/
  17. python图片截取特定部分_如何在Python中使用OpenCV提取图像的特定部分?
  18. 2021西湖论剑wp
  19. 解决联发科mt7921网卡在ubuntu下没有wifi的问题
  20. CPU硬件辅助虚拟化技术

热门文章

  1. 把图片后缀变为jpg格式
  2. 软件测试工程师实际工作中常遇到的问题及解决方案
  3. php,mysql的简历_PHP开发工程师岗位个人简历个人技能范文
  4. 关于毫米波雷达的使用方法
  5. 电脑win10计算机图标,win10系统桌面的计算机图标没了的详细技巧
  6. 转:【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
  7. docker使用MySQL镜像
  8. python自动组卷系统_基于遗传算法(C#编写)的智能组卷系统优化
  9. 【FMC134】ADC12DJ3200之4通道3.2GSPS(2 通道6.4GSPS) 12 位AD高速采集子卡设计原理图及调试经验
  10. Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误