noj算法题——装载问题
来源:互联网 发布:淘宝c店 编辑:程序博客网 时间:2024/06/05 10:25
装载问题(回溯,子集树)
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。
输入:
多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。
输出:
对于每个测例在单独的一行内输出Yes或No。
输入样例:
7 8 2
8 7
7 9 2
8 8
0 0 0
输出样例:
Yes
No
提示:求出不超过c1的最大值MAX,若总重量-MAX<c2,则能装入到两艘船
C语言代码:
#include <stdio.h>#include <stdlib.h>#define MAX 15void load(int *w,int c1,int n,int nowWeight);int w[MAX]={0};int c1,c2,n;int MaxWeight=0;int count=0;int result[MAX]={0};void load(int *w,int c1,int n,int nowWeight){ if(n==0){ if(nowWeight>MaxWeight){ if(nowWeight<=c1) MaxWeight=nowWeight; } return; } if(c1>=w[n-1]){ load(w,c1,n-1,nowWeight+w[n-1]); } load(w,c1,n-1,nowWeight);}int main(){ int i,weight,restWeight; while((scanf("%d%d%d",&c1,&c2,&n)!=1)&&(n!=0)){ for(i=0;i<n;i++){ scanf("%d",&weight); w[i]=weight; } load(w,c1,n,0); //printf("%d\n",MaxWeight); restWeight=(c1+c2)-MaxWeight; if(restWeight<=c2) result[count]=1; //printf("Yes\n"); else result[count]=0; // printf("No\n"); count++; MaxWeight=0; } for(i=0;i<count;i++){ if(result[i]==1) printf("Yes\n"); else printf("No\n"); } return 0;}
0 0
- noj算法题——装载问题
- 算法练习-NOJ-1005-装载问题
- noj算法题——堡垒问题
- noj算法题——0-1背包问题
- noj算法题——八皇后问题
- noj算法设计——迷宫问题
- noj算法题——二分查找
- noj算法题——走迷宫
- noj算法题——循环赛日程表
- noj算法题——素数环
- 装载问题——搜索回溯算法
- 贪心算法——最优装载问题
- noj算法设计——农场灌溉问题
- noj算法题——穷举n位二进制数
- noj算法设计题——踩气球
- noj算法设计题——字母转换
- NOJ——1641错误的算法
- 装载问题 回溯算法
- 使用Thinkphp的路由功能实现Get传参方式的伪静态
- 开启Maven使用之路
- 黑马程序员-C语言学习日记三之函数参数的传递的小结
- tcp的NAT穿透
- android文件系统管理
- noj算法题——装载问题
- 最好的C++书籍介绍(转)
- 开通了公共微信号:xuxiaopenglvshi,扫一扫关注我吧,我会定期分享一些法律方面的知识
- 设计模式目录
- 思考、学习新技术的原则和方式-程序员人生的精华
- F数圈圈
- Before You Refactor
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- nginx服务器更改网站根目录