• POJ2200+全排列模拟


    简单。

    手动的实现全排列

      1 #include<stdio.h>
      2 #include<string.h>
      3 #include<stdlib.h>
      4 #include<algorithm>
      5 using namespace std;
      6 const int maxn = 24;
      7 
      8 struct node{
      9     char a,b,aa;
     10     int c,d,val;
     11 }p[ 5 ],temp;
     12 
     13 struct node2{
     14     node tt[5];
     15     int most;
     16 }ans[ 122 ];
     17 
     18 int cmp( node a,node b ){
     19     return a.val<b.val;
     20 }
     21 
     22 int cmp2( node2 a,node2 b ){
     23     return a.most<b.most;
     24 }
     25 
     26 int cnt;
     27 
     28 int value( char ch ){
     29     if( ch=='C' ) return 1;
     30     else if( ch=='D' ) return 2;
     31     else if( ch=='H' ) return 3;
     32     else if( ch=='S' ) return 4;
     33     if( ch=='A' ) return 1;
     34     else if( ch>='2'&&ch<='9' ) return (ch-'0');
     35     else if( ch=='J' ) return 11;
     36     else if( ch=='Q' ) return 12;
     37     else if( ch=='K' ) return 13;
     38 }
     39 
     40 bool judge(){
     41     if( p[0].b!=p[1].b ) return false;
     42 
     43 
     44     if( p[2].val<=p[3].val&&p[2].val<=p[4].val ){
     45         if( p[3].val>=p[4].val ) {//pos = 4
     46             if( p[1].aa!='#' ){//10
     47                 if(p[0].a=='A' ) return true;
     48                 else return false;
     49             }
     50             else if( p[1].a=='A' ) {//1
     51                 if( p[0].a=='5' ) return true;
     52                 else return false;
     53             }
     54             else if( p[1].a=='2' ){//2
     55                 if( p[0].a=='6' ) return true;
     56                 else return false;
     57             }
     58             else if( p[1].a=='3' ){//3
     59                 if( p[0].a=='7' ) return true;
     60                 else return false;
     61             }
     62             else if( p[1].a=='4' ){//4
     63                 if( p[0].a=='8' ) return true;
     64                 else return false;
     65             }
     66             else if( p[1].a=='5' ){//5
     67                 if( p[0].a=='9' ) return true;
     68                 else return false;
     69             }
     70             else if( p[1].a=='6' ){//6
     71                 if( p[0].a=='1' ) return true;
     72                 else return false;
     73             }
     74             else if( p[1].a=='7' ){//7
     75                 if( p[0].a=='J' ) return true;
     76                 else return false;
     77             }
     78             else if( p[1].a=='8' ){//8
     79                 if( p[0].a=='Q' ) return true;
     80                 else return false;
     81             }
     82             else if( p[1].a=='9' ){//9
     83                 if( p[0].a=='K' ) return true;
     84                 else return false;
     85             }
     86             else if( p[1].a=='J' ){//J
     87                 if( p[0].a=='2' ) return true;
     88                 else return false;
     89             }
     90             else if( p[1].a=='Q' ){//Q
     91                 if( p[0].a=='3' ) return true;
     92                 else return false;
     93             }
     94             else if( p[1].a=='K' ){//K
     95                 if( p[0].a=='4' ) return true;
     96                 else return false;
     97             }
     98         }
     99         else {//pos = 1
    100             if( p[1].aa!='#' ){//10
    101                 if(p[0].a=='J' ) return true;
    102                 else return false;
    103             }
    104             else if( p[1].a=='A' ) {//1
    105                 if( p[0].a=='2' ) return true;
    106                 else return false;
    107             }
    108             else if( p[1].a=='2' ){//2
    109                 if( p[0].a=='3' ) return true;
    110                 else return false;
    111             }
    112             else if( p[1].a=='3' ){//3
    113                 if( p[0].a=='4' ) return true;
    114                 else return false;
    115             }
    116             else if( p[1].a=='4' ){//4
    117                 if( p[0].a=='5' ) return true;
    118                 else return false;
    119             }
    120             else if( p[1].a=='5' ){//5
    121                 if( p[0].a=='6' ) return true;
    122                 else return false;
    123             }
    124             else if( p[1].a=='6' ){//6
    125                 if( p[0].a=='7' ) return true;
    126                 else return false;
    127             }
    128             else if( p[1].a=='7' ){//7
    129                 if( p[0].a=='8' ) return true;
    130                 else return false;
    131             }
    132             else if( p[1].a=='8' ){//8
    133                 if( p[0].a=='9' ) return true;
    134                 else return false;
    135             }
    136             else if( p[1].a=='9' ){//9
    137                 if( p[0].a=='1' ) return true;
    138                 else return false;
    139             }
    140             else if( p[1].a=='J' ){//J
    141                 if( p[0].a=='Q' ) return true;
    142                 else return false;
    143             }
    144             else if( p[1].a=='Q' ){//Q
    145                 if( p[0].a=='K' ) return true;
    146                 else return false;
    147             }
    148             else if( p[1].a=='K' ){//K
    149                 if( p[0].a=='A' ) return true;
    150                 else return false;
    151             }
    152         }
    153     }
    154 
    155 
    156     if( p[4].val<=p[3].val&&p[4].val<=p[2].val ){
    157         if( p[2].val>=p[3].val ) {//pos = 6
    158             if( p[1].aa!='#' ){//10
    159                 if(p[0].a=='3' ) return true;
    160                 else return false;
    161             }
    162             else if( p[1].a=='A' ) {//1
    163                 if( p[0].a=='7' ) return true;
    164                 else return false;
    165             }
    166             else if( p[1].a=='2' ){//2
    167                 if( p[0].a=='8' ) return true;
    168                 else return false;
    169             }
    170             else if( p[1].a=='3' ){//3
    171                 if( p[0].a=='9' ) return true;
    172                 else return false;
    173             }
    174             else if( p[1].a=='4' ){//4
    175                 if( p[0].a=='1' ) return true;
    176                 else return false;
    177             }
    178             else if( p[1].a=='5' ){//5
    179                 if( p[0].a=='J' ) return true;
    180                 else return false;
    181             }
    182             else if( p[1].a=='6' ){//6
    183                 if( p[0].a=='Q' ) return true;
    184                 else return false;
    185             }
    186             else if( p[1].a=='7' ){//7
    187                 if( p[0].a=='K' ) return true;
    188                 else return false;
    189             }
    190             else if( p[1].a=='8' ){//8
    191                 if( p[0].a=='A' ) return true;
    192                 else return false;
    193             }
    194             else if( p[1].a=='9' ){//9
    195                 if( p[0].a=='2' ) return true;
    196                 else return false;
    197             }
    198             else if( p[1].a=='J' ){//J
    199                 if( p[0].a=='4' ) return true;
    200                 else return false;
    201             }
    202             else if( p[1].a=='Q' ){//Q
    203                 if( p[0].a=='5' ) return true;
    204                 else return false;
    205             }
    206             else if( p[1].a=='K' ){//K
    207                 if( p[0].a=='6' ) return true;
    208                 else return false;
    209             }
    210         }
    211         else {//pos = 3
    212             if( p[1].aa!='#' ){//10
    213                 if(p[0].a=='K' ) return true;
    214                 else return false;
    215             }
    216             else if( p[1].a=='A' ) {//1
    217                 if( p[0].a=='4' ) return true;
    218                 else return false;
    219             }
    220             else if( p[1].a=='2' ){//2
    221                 if( p[0].a=='5' ) return true;
    222                 else return false;
    223             }
    224             else if( p[1].a=='3' ){//3
    225                 if( p[0].a=='6' ) return true;
    226                 else return false;
    227             }
    228             else if( p[1].a=='4' ){//4
    229                 if( p[0].a=='7' ) return true;
    230                 else return false;
    231             }
    232             else if( p[1].a=='5' ){//5
    233                 if( p[0].a=='8' ) return true;
    234                 else return false;
    235             }
    236             else if( p[1].a=='6' ){//6
    237                 if( p[0].a=='9' ) return true;
    238                 else return false;
    239             }
    240             else if( p[1].a=='7' ){//7
    241                 if( p[0].a=='1' ) return true;
    242                 else return false;
    243             }
    244             else if( p[1].a=='8' ){//8
    245                 if( p[0].a=='J' ) return true;
    246                 else return false;
    247             }
    248             else if( p[1].a=='9' ){//9
    249                 if( p[0].a=='Q' ) return true;
    250                 else return false;
    251             }
    252             else if( p[1].a=='J' ){//J
    253                 if( p[0].a=='A' ) return true;
    254                 else return false;
    255             }
    256             else if( p[1].a=='Q' ){//Q
    257                 if( p[0].a=='2' ) return true;
    258                 else return false;
    259             }
    260             else if( p[1].a=='K' ){//K
    261                 if( p[0].a=='3' ) return true;
    262                 else return false;
    263             }
    264         }
    265     }
    266 
    267 
    268     if( p[3].val<=p[2].val&&p[3].val<=p[4].val ){
    269         if( p[2].val>=p[4].val ) {//pos = 5
    270             if( p[1].aa!='#' ){//10
    271                 if(p[0].a=='2' ) return true;
    272                 else return false;
    273             }
    274             else if( p[1].a=='A' ) {//1
    275                 if( p[0].a=='6' ) return true;
    276                 else return false;
    277             }
    278             else if( p[1].a=='2' ){//2
    279                 if( p[0].a=='7' ) return true;
    280                 else return false;
    281             }
    282             else if( p[1].a=='3' ){//3
    283                 if( p[0].a=='8' ) return true;
    284                 else return false;
    285             }
    286             else if( p[1].a=='4' ){//4
    287                 if( p[0].a=='9' ) return true;
    288                 else return false;
    289             }
    290             else if( p[1].a=='5' ){//5
    291                 if( p[0].a=='1' ) return true;
    292                 else return false;
    293             }
    294             else if( p[1].a=='6' ){//6
    295                 if( p[0].a=='J' ) return true;
    296                 else return false;
    297             }
    298             else if( p[1].a=='7' ){//7
    299                 if( p[0].a=='Q' ) return true;
    300                 else return false;
    301             }
    302             else if( p[1].a=='8' ){//8
    303                 if( p[0].a=='K' ) return true;
    304                 else return false;
    305             }
    306             else if( p[1].a=='9' ){//9
    307                 if( p[0].a=='A' ) return true;
    308                 else return false;
    309             }
    310             else if( p[1].a=='J' ){//J
    311                 if( p[0].a=='3' ) return true;
    312                 else return false;
    313             }
    314             else if( p[1].a=='Q' ){//Q
    315                 if( p[0].a=='4' ) return true;
    316                 else return false;
    317             }
    318             else if( p[1].a=='K' ){//K
    319                 if( p[0].a=='5' ) return true;
    320                 else return false;
    321             }
    322         }
    323         else {//pos = 2
    324             if( p[1].aa!='#' ){//10
    325                 if(p[0].a=='Q' ) return true;
    326                 else return false;
    327             }
    328             else if( p[1].a=='A' ) {//1
    329                 if( p[0].a=='3' ) return true;
    330                 else return false;
    331             }
    332             else if( p[1].a=='2' ){//2
    333                 if( p[0].a=='4' ) return true;
    334                 else return false;
    335             }
    336             else if( p[1].a=='3' ){//3
    337                 if( p[0].a=='5' ) return true;
    338                 else return false;
    339             }
    340             else if( p[1].a=='4' ){//4
    341                 if( p[0].a=='6' ) return true;
    342                 else return false;
    343             }
    344             else if( p[1].a=='5' ){//5
    345                 if( p[0].a=='7' ) return true;
    346                 else return false;
    347             }
    348             else if( p[1].a=='6' ){//6
    349                 if( p[0].a=='8' ) return true;
    350                 else return false;
    351             }
    352             else if( p[1].a=='7' ){//7
    353                 if( p[0].a=='9' ) return true;
    354                 else return false;
    355             }
    356             else if( p[1].a=='8' ){//8
    357                 if( p[0].a=='1' ) return true;
    358                 else return false;
    359             }
    360             else if( p[1].a=='9' ){//9
    361                 if( p[0].a=='J' ) return true;
    362                 else return false;
    363             }
    364             else if( p[1].a=='J' ){//J
    365                 if( p[0].a=='K' ) return true;
    366                 else return false;
    367             }
    368             else if( p[1].a=='Q' ){//Q
    369                 if( p[0].a=='A' ) return true;
    370                 else return false;
    371             }
    372             else if( p[1].a=='K' ){//K
    373                 if( p[0].a=='2' ) return true;
    374                 else return false;
    375             }
    376         }
    377     }
    378 }
    379 
    380 void solve( int l,int r ){
    381     if( l>r&&cnt==0 ){
    382         if( judge()==true ) {
    383             ans[ cnt ].tt[0] = p[0];
    384             ans[ cnt ].tt[1] = p[1];
    385             ans[ cnt ].tt[2] = p[2];
    386             ans[ cnt ].tt[3] = p[3];
    387             ans[ cnt ].tt[4] = p[4];
    388             ans[ cnt ].most = p[0].val+10*p[1].val+100*p[2].val+1000*p[3].val+10000*p[4].val;
    389             cnt++;
    390         }
    391         return ;
    392     }
    393     for( int i=l;i<=r&&cnt==0;i++ ){
    394         temp = p[i];
    395         p[i] = p[l];
    396         p[l] = temp;
    397         solve( l+1,r );
    398         if( cnt>0 ) return ;
    399         temp = p[i];
    400         p[i] = p[l];
    401         p[l] = temp;
    402     }
    403 }
    404 
    405 int main(){
    406     int ca = 1;
    407     int T;
    408     scanf("%d",&T);
    409     while( T-- ){
    410         printf("Problem %d: ",ca++);
    411         char s[ 4 ];
    412         cnt =  0;
    413         for( int i=0;i<5;i++ ){
    414             scanf("%s",s);
    415             if( strlen(s)==3 ) {
    416                 p[i].a = '1';
    417                 p[i].aa = '0';
    418                 p[i].b = s[2];
    419                 p[i].c = 10;
    420                 p[i].d = value( s[2] );
    421                 p[i].val = 10*p[i].c+p[i].d;
    422             }
    423             else {
    424                 p[i].a = s[0];
    425                 p[i].b = s[1];
    426                 p[i].aa = '#';
    427                 p[i].c = value(s[0]);
    428                 p[i].d = value(s[1]);
    429                 p[i].val = 10*p[i].c+p[i].d;
    430             }
    431         }
    432         sort( p,p+5,cmp );
    433         solve( 0,4 );
    434         /*
    435         sort( ans,ans+cnt,cmp2 );
    436         p[0] = ans[0].tt[0];
    437         p[1] = ans[0].tt[1];
    438         p[2] = ans[0].tt[2];
    439         p[3] = ans[0].tt[3];
    440         p[4] = ans[0].tt[4];
    441         */
    442         //printf("
    cnt=%d
    ",cnt);
    443         for( int i=0;i<5;i++ ){
    444             if(i==0) {
    445                 if( p[i].aa=='#' ) printf("%c%c",p[i].a,p[i].b);
    446                 else printf("10%c",p[i].b);
    447             }
    448             else{
    449                 if( p[i].aa=='#' ) printf(" %c%c",p[i].a,p[i].b);
    450                 else printf(" 10%c",p[i].b);
    451             }
    452         }
    453         printf("
    ");
    454     }
    455     return 0;
    456 }
    View Code

    代码有点长。。有点啰嗦。。

    keep moving...
  • 相关阅读:
    PXE无人自动安装系统 大风起
    httpd基于域名的虚拟主机的简单介绍 大风起
    tomcat优化方案 大风起
    tomcat架构 大风起
    Tomcat优化2 大风起
    NET 2.0学习
    删除VS2005历史记录
    在淘宝上建了个小店,在自己的小窝里宣传一下
    微软提供的ASP.NET 2.0空间,你还不赶紧去注册!!呵呵
    DataGridView.BackGroundImage你用过吗?
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3188237.html
Copyright © 2020-2023  润新知