• UVA, 102 Ecological Bin Packing


    题意:给你仨箱子,每个箱子里面有三种瓶子B G C,让你将其分类,使得每个箱子里只有一种瓶子,

       每次只能移动一个瓶子,要求移动步数最小,相同则按字典序输出

    思路:排列得到顺序有:BCG BGC CBG CGB GBC GCB 六种,都算出来按大小找就行了

        ps:输入时顺序为:B G C ,为了方便我排序成了 B C G

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 int date[3][3],sum[6];
     6 int mins,p;
     7 string type[6]={"BCG","BGC","CBG","CGB","GBC","GCB"};
     8 bool datecin()//每个箱子瓶子B C G
     9 {
    10     if(scanf("%d%d%d%d%d%d%d%d%d",&date[0][0],&date[0][2],&date[0][1],&date[1][0],&date[1][2],&date[1][1],&date[2][0],&date[2][2],&date[2][1])!=EOF)
    11         return true;
    12     return false;
    13 }
    14 
    15 void datecal()
    16 {
    17 
    18     sum[0]=date[1][0]+date[2][0]+ date[0][1]+date[2][1]+ date[0][2]+date[1][2];//BCG
    19     sum[1]=date[1][0]+date[2][0]+ date[0][2]+date[2][2]+ date[0][1]+date[1][1];//BGC
    20 
    21     sum[2]=date[1][1]+date[2][1]+ date[0][0]+date[2][0]+ date[0][2]+date[1][2];//CBG
    22     sum[3]=date[1][1]+date[2][1]+ date[0][2]+date[2][2]+ date[0][0]+date[1][0];//CGB
    23 
    24     sum[4]=date[1][2]+date[2][2]+ date[0][0]+date[2][0]+ date[0][1]+date[1][1];//GBC
    25     sum[5]=date[1][2]+date[2][2]+ date[0][1]+date[2][1]+ date[0][0]+date[1][0];//GCB
    26 
    27     mins=sum[0],p=0;
    28     for(int i=1;i<6;i++) if(mins>sum[i]) { mins=sum[i],p=i;}
    29 }
    30 
    31 void showres()
    32 {
    33     datecal();
    34     cout<<type[p]<<' '<<sum[p]<<endl;
    35 }
    36 
    37 int main()
    38 {
    39     while(datecin())
    40     {
    41         showres();
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    【SQL跟踪工具】SQL Profiler 跟踪器
    使用Fiddler调试手机端页面请求/抓包
    SQL 常用判断语句
    VS中常用快捷键
    博客园博客自动生成目录/目录索引
    BZOJ 1135 P3488 LYZ-Ice Skates 线段树+Hall
    BZOJ 4823 老C的方块
    POJ
    BZOJ 1299 [LLH邀请赛]巧克力棒
    BZOJ 2437 [Noi2011]兔兔与蛋蛋
  • 原文地址:https://www.cnblogs.com/byzsxloli/p/5455569.html
Copyright © 2020-2023  润新知