您的位置:首页 > 其它

1005 装载问题

2017-11-02 22:28 183 查看
ac8d

#include<stdio.h>

int find(int n);

int max();

int weight[100000]={0};

int s[100]={0};

int tmp,num=1;

int c[3],n,w[100];

int save[1000]={0},nn=1;

int sum=0;

int main()

{
int i;
while(1)
{
sum=0;
scanf("%d %d %d",&c[1],&c[2],&n);
tmp=n;
if(c[1]==0&&c[2]==0&&n==0)
{
break;
}
for(i=1; i<=n; i++)
{
scanf("%d",&w[i]);
sum=sum+w[i];
}
num=1;
for(i=1; i<1000; i++)
{
weight[i]=0;
}
find(n);
max();
}
for(i=1; i<nn; i++)
{
if(save[i]==1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}

}
return 0;

}

int find(int n)

{
int i;
if(n==0)
{
for(i=1; i<=tmp; i++)
{
weight[num]=weight[num]+w[i]*s[i];
}
if(weight[num]<=c[1])
{
num++;
}
else
{
weight[num]=0;
}

}
else
{
for(i=0; i<2; i++)
{
s
=i;
find(n-1);
}
}

}

int max()

{
int i,j,flag;
for(i=1; i<num; i++)
{
flag=1;
for(j=1; j<num; j++)
{
if(weight[i]<weight[j])
{
flag=0;
break;
}
}
if(flag==1)
{

if((sum-weight[i])<=c[2])
{
save[nn]=1;
nn++;
break;
}
else
{
save[nn]=0;
nn++;
break;
}
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: