博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划+ 背包问题
阅读量:5247 次
发布时间:2019-06-14

本文共 1565 字,大约阅读时间需要 5 分钟。

1 /* 2 公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。 3  4  5 整个问题的思路就是数学上的进制*/ 6  7 #include
8 #include
9 typedef struct Totalprice // 结构体 10 {11 int price; //单价12 int count; //数量13 int max_value; //最大个数14 }totalprice;15 16 int m;17 totalprice *unit;18 19 //先判断个位上的数 ,是否已满,若满的话。就要向十位的数进一个,(也要判断十位上的数是否也已满),一直到最后一位数达到最大值。20 int panduan(int i)21 {22 if(((unit+i)->count>(unit+i)->max_value)&&(unit+m-1)->count<=(unit+m-1)->max_value)23 {24 (unit+i)->count=0;25 ++(unit+(++i))->count;26 panduan(i);27 }28 else29 return;30 }31 32 33 void main()34 {35 int i,j=0;36 int sum=0;37 printf("请输入可购买的商品种类:");38 scanf("%d",&m);39 //动态的申请内存空间40 unit=(totalprice *)malloc(sizeof(totalprice)*m);41 42 //初始化数据43 for(i=0;i
price);46 (unit+i)->count=0;47 (unit+i)->max_value = 1000/(unit+i)->price;48 }49 printf("\n");50 for(i=0;i
price);53 printf("max_value=%d\n",(unit+i)->max_value);54 }55 56 //操作57 while((unit+m-1)->count<=(unit+m-1)->max_value)58 {59 ++(unit)->count;60 panduan(0);61 for(i=0;i
price*(unit+i)->count;63 if(sum == 1000)64 {65 for(i=0;i
count);67 printf("\n"),j++;68 }69 else70 sum = 0;71 }72 printf("\n总共方案: %d\n",j);73 getch();74 }

 

转载于:https://www.cnblogs.com/zychengzhiit1/archive/2012/08/04/2623394.html

你可能感兴趣的文章
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>