#include using namespace std; struct poker { int type; int content[5]; }; void leadin(char temp[ ],int card[ ],int i) { if(strcmp(temp,"3")==0) card[i]=3; else if(strcmp(temp,"4")==0) card[i]=4; else if(strcmp(temp,"5")==0) card[i]=5; else if(strcmp(temp,"6")==0) card[i]=6; else if(strcmp(temp,"7")==0) card[i]=7; else if(strcmp(temp,"8")==0) card[i]=8; else if(strcmp(temp,"9")==0) card[i]=9; else if(strcmp(temp,"10")==0) card[i]=10; else if(strcmp(temp,"J")==0) card[i]=11; else if(strcmp(temp,"Q")==0) card[i]=12; else if(strcmp(temp,"K")==0) card[i]=13; else if(strcmp(temp,"A")==0) card[i]=14; else if(strcmp(temp,"2")==0) card[i]=20; else if(strcmp(temp,"joker")==0) card[i]=50; else if(strcmp(temp,"JOKER")==0) card[i]=100; } void print(int n) { if(n>=3&&n<=10) printf("%d",n); else if(n==11) putchar('J'); else if(n==12) putchar('Q'); else if(n==13) putchar('K'); else if(n==14) putchar('A'); else if(n==20) putchar('2'); else if(n==50) printf("joker"); else printf("JOKER"); putchar(' '); } void select(int a[ ],int n) { int min,temp; for(int i=0;ia[j]) min=a[j]; for(int j=i;j=5&&flag==1)//顺子 { po.type=4; po.content[0]=card[0]; po.content[1]=n; return po; } flag=1; for(int i=0;i=6&&flag==1)//连对 { po.type=3; po.content[0]=card[0]; po.content[1]=n/2; return po; } switch(n) { case 1://单张 { po.type=9; po.content[0]=card[0]; break; } case 2: { if(card[0]<50)//对子 { po.type=1; po.content[0]=card[0]; } else po.type=8;//王炸 break; } case 3://三带 { po.type=2; po.content[0]=card[0]; po.content[1]=0; break; } case 4: { if(card[0]!=card[1]||card[2]!=card[3])//三带一 { po.type=2; po.content[0]=card[1]; po.content[1]=1; } else//炸弹 { po.type=7; po.content[0]=card[0]; } break; } case 5://三带二 { po.type=2; po.content[0]=card[2]; po.content[1]=2; break; } case 6: { if(card[2]==card[3])//四带二张 { po.type=5; po.content[0]=card[2]; po.content[1]=1; break; } } case 8: { if(card[0]==card[1]&&card[2]==card[3]&&card[4]==card[5])//四带二对 { po.type=5; if(card[1]==card[2]) po.content[0]=card[0]; else po.content[0]=card[4]; po.content[1]=2; break; } } default://飞机 { po.type=6; po.content[1]=n/3; po.content[2]=n%3; for(int i=0;ipo.content[0]) { pok.type=1; pok.content[0]=card[i]; print(card[i]); print(card[i+1]); putchar('\n'); card[i]=0; card[i+1]=0; select(card,n); return pok; } } break; } case 2: { for(int i=0;ipo.content[0]) { bool flag=0; if(po.content[1]==0)//三带 { pok.content[1]=0; flag=1; } else if(po.content[1]==1)//三带一 { for(int j=0;j0) { if(card[i]==card[i+1]&&card[i]==temp+1) { temp=card[i]; count++; i+=2; while(i=n&&count=pok.content[0]+pok.content[1]) break; } putchar('\n'); select(card,n); return pok; } else flag=1; } break; } case 4://顺子 { bool flag=1; int count=0,temp,i=0; while(card[i]<=po.content[0]) i++; while(i0) { if(card[i]==temp+1) { temp=card[i]; count++; i++; while(i=n&&count=pok.content[0]+pok.content[1]) break; } putchar('\n'); select(card,n); return pok; } else flag=1; } break; } case 5: { for(int i=0;ipo.content[0]) { if(po.content[1]==1)//四带二张 { int j,temp; for(j=0;j0&&card[j]!=card[i]) { temp=j; break; } } for(j++;j0&&card[j]==card[j+1]&&card[j]!=card[i]) { temp=j; break; } } for(j+=2;j0) { if(card[i]==card[i+1]&&card[i]==card[i+2]&&card[i]==temp+1) { temp=card[i]; count++; i+=3; if(i=n&&countpok.content[0]+pok.content[1]) break; } putchar('\n'); select(card,n); return pok; } else if(po.content[2]==1)//飞机带小翼 { bool sign=1; int j=0; while(card[j]==0) j++; for(;jpok.content[0]+pok.content[1]) break; } putchar('\n'); select(card,n); return pok; } else sign=1; } break; } else//飞机带大翼 { bool sign=1,_sign=1; int j=0,_temp; while(card[j]==0) j++; for(;jpok.content[0]+pok.content[1]) break; } putchar('\n'); select(card,n); return pok; } else _sign=1; } } else sign=1; } break; } } else flag=1; } break; } case 7://炸弹 { for(int i=0;ipo.content[0]) { pok.type=7; pok.content[0]=card[i]; print(card[i]); print(card[i+1]); print(card[i+2]); print(card[i+3]); putchar('\n'); card[i]=0; card[i+1]=0; card[i+2]=0; card[i+3]=0; select(card,n); return pok; } } break; } case 9://单张 { for(int i=0;ipo.content[0]) { pok.type=9; pok.content[0]=card[i]; print(card[i]); putchar('\n'); card[i]=0; select(card,n); return pok; } } break; } } if(po.type!=7&&po.type!=8&&pok.type==0)//炸弹 { for(int i=0;i=50)//王炸 { pok.type=8; card[n-1]=0; card[n]=0; printf("joker JOKER\n"); select(card,n); return pok; } if(pok.type==0) printf("YAO BU QI\n"); return pok; } int main( ) { char temp[10]; int card1[25]={0},card2[25]={0},m,n; while(1) { scanf("%d%d",&m,&n); for(int i=0;i