求三個回收桶回收三種顏色的瓶子,該如何分配顏色所需的瓶子移動總數最少
[心得]
1.只需考慮六種情況,依題目要求由字典順序去令排列的情況,暴力法解題
#include <stdio.h>
int main()
{
int B1,G1,C1,B2,G2,C2,B3,G3,C3,W[6],i,j,min;
while(scanf("%d %d %d %d %d %d %d %d %d",&B1,&G1,&C1,&B2,&G2,&C2,&B3,&G3,&C3)!=EOF)
{
/*BCG*/ W[0]=B2+B3+C1+C3+G1+G2;
/*BGC*/ W[1]=B2+B3+G1+G3+C1+C2;
/*CBG*/ W[2]=C2+C3+B1+B3+G1+G2;
/*CGB*/ W[3]=C2+C3+G1+G3+B1+B2;
/*GBC*/ W[4]=G2+G3+B1+B3+C1+C2;
/*GCB*/ W[5]=G2+G3+C1+C3+B1+B2;
min=W[0]; j=0;
for(i=1;i<6;i++)
if(W[i]<min)
{
min=W[i];
j=i;
}
switch(j)
{
case 0: {printf("BCG %d\n",min); break;}
case 1: {printf("BGC %d\n",min); break;}
case 2: {printf("CBG %d\n",min); break;}
case 3: {printf("CGB %d\n",min); break;}
case 4: {printf("GBC %d\n",min); break;}
case 5: {printf("GCB %d\n",min); break;}
}
}
return 0;
}