#define n 1000
int main(void)
{ int a[n],b[n],i=0,j,x,max=1
scanf("%d",&x)
for(i=1i<=xi++)
scanf("%d",&a[i])
for(j=1j<=100j++)
b[j]=100
for(i=1i<=xi++)
for(j=1j<=100j++)
{ if(b[j]-a[i]>=0)
{ printf("%d %d\n",a[i],j)
b[j]=b[j]-a[i]
if(max<j)
max=j
break}
}
printf("所需的箱子数目为%d\n",max)
return 0
}
我运行没问题。#define N 100
main()
{
int sum, set, i, j, max, check[100]
int volume[N]={8,3,12,7,9,7}, n=6,_n, v=24
/*scanf("%d", &v)
scanf("%d", &n)
for (i=1i<=ni++)
scanf("%d", &volume[i])
max=0
*/
set=1
for (i=1i<=ni++)
set*=2//计算2的N次方。
for (i=0i<=seti++)
{
for (j=1j<=nj++)
check[j]=0 //清空数组
j=i
sum=1
while (j>=1)//把数据转换成二进制数制(1代表取,0代表不取)
{
check[sum]=j%2
j/=2
sum++
}
sum=0//计算该方案占用的体积
for (j=1j<=nj++)
if (check[j]==1)
sum+=volume[j]
if ((sum<=v)&&(sum>=max)) //根据题意作比较
max=sum
}
printf("%d",v-max) //输出剩余体积。
system("pause")
}
我确实运行没问题。OK,0