>>409-410 は方針は考えてあるんだけど、プログラムを書くまとまった時間がとれん。
あー、やる気が途中でうせた版ならあげてみるか。
void ResolveProblem(int iBottle,int iThings[],int iNumThings){
int volume[100]; // bottleの使用容量
int i,j,n;
for(i=0;i<iNumThings;i++){
volume[i]=0;
}
j=0;
for(n=0;n<iNumThings;n++){
int flag = 0;

for(i=0;i<j;i++){
if(volume[i] + iThings[n] <= iBottle){
printf("%d is inserted No. %2d : %d: before(%d) -> after(%d) \n"
, n , i , iThings[n] , volume[i] , volume[i]+iThings[n]);
volume[i]+=iThings[n];
flag = 1;
break;
}
}
if(flag == 0){
printf("Make a new bottle -> %d \n", j);
printf("%d is inserted to No. %2d : %d: before(%d) -> after(%d) \n"
, n , j , iThings[n] , volume[j] , volume[j]+iThings[n]);
volume[j++]=iThings[n];
}
}
for(n=0;n<j;n++){
printf("%d ",volume[n]);
}
}