兩隻船的裝載問題
阿新 • • 發佈:2019-02-02
#include<iostream> using namespace std; int n,c1,c2,w[20],a[20]; int maxw; void check() { int i,weight=0; for(i=0;i<n;i++) { if(a[i]) weight+=w[i]; } if(weight<=c1) if(weight>maxw) maxw=weight;//更新船1的最大裝載量 } void search(int m) { if(m==n) check(); else { a[m]=1;//取重量為w[m]的箱子 search(m+1);//搜尋下一件物品 a[m]=0;//不取 search(m+1);//搜尋下一件物品 } } int main() { int i,sum; while(cin>>c1>>c2>>n&&n) { maxw=sum=0; memset(a,0,sizeof(a)); for(i=0;i<n;i++) { cin>>w[i]; sum+=w[i]; } search(0); if(sum-maxw<=c2) cout<<maxw<<' '<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }