回复 20楼 azzbcc
谢谢你,看来看别人的东西更累,代价要高。
www.qunxingw.wang
#include<iostream> using namespace std; int main() { int i,x,flat=1; int b[14]={1,2,3,4,4,4,5,5,5,5,6,7,8,9};// 牌无需排序。 int a[10]={0}; for(i=0; i<14; i++) { a[b[i]-1]++; //统计每种牌的数量 } int xi,a2[10]; for (x=0; x<10; x++) //循环找一对将牌 { for(i=0;i<10;i++) a2[i]=a[i]; if(a2[x]>=2 )//,除掉将牌 { a2[x]-=2; } else continue; xi=0; flat=1; for(i=0; i<10; i++) //找出连续或相同的三个数 { if(a2[i]>=3) { a2[i]-=3; xi+=3; } if((a2[i]>0)&&(i>=8)) { flat=0; break; } if(a2[i]==2) { if((a2[i+1]>1)&&(a2[i+2]>1)) { a2[i]-=2; a2[i+1]-=2; a2[i+2]-=2; } else { flat=0; break; } } else if(a2[i]==1) { if((a2[i+1]>0)&&(a2[i+2]>0)) { a2[i]--; a2[i+1]--; a2[i+2]--; } else { flat=0; break; } } } if(flat==1) break; } if(flat) cout<<"恭喜您!已胡牌!"<<endl; else cout<<"对不起!不能胡牌!"<<endl; return 0; }