1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int sum[15]; int n; int res=0; void one() { for(int i=1;i<=13;i++) { if(sum[i]>=1) { res++; } } } void dui() { for(int i=1;i<=13;i++) { if(sum[i]>=2) { res++; } } } void three() { for(int i=1;i<=13;i++) { if(sum[i]>=3) { sum[i]-=3; res++; for(int j=1;j<=13;j++) { if(sum[j]>=2) res++; if(sum[j]>=1) res++; } sum[i]+=3; } } } void sz() { int res1=1; for(int i=1;i<=8;i++) { if(sum[i]>=1) { if(res1==1) { res1=1; for(int j=i+1;j<=12;j++) { if(sum[j]>=1) { res1++; } else break; } } else res1--; if(res1>=5) { for(int j=4;j<res1;j++) { res++; } } } } } void ld() { int res1=1; for(int i=1;i<=10;i++) { if(sum[i]>=2) { if(res1==1) { res1=1; for(int j=i+1;j<=12;j++) { if(sum[j]>=2) res1++; else break; } } else res1--; if(res1>=3) { for(int j=2;j<res1;j++) { res++; } } } } } void fjone(int s,int temp) { if(s==0) { res++; return ; } for(int i=temp;i<=13;i++) { if(sum[i]>=1) { sum[i]--; fjone(s-1,i); sum[i]++; } } } void fjtwo(int s,int temp) { if(s==0) { res++; return ; } for(int i=temp;i<=13;i++) { if(sum[i]>=2) { sum[i]-=2; fjtwo(s-1,i); sum[i]+=2; } } } void fj() { int res1=1; for(int i=1;i<=11;i++) { if(sum[i]>=3) { if(res1==1) { res1=1; for(int j=i+1;j<=12;j++) { if(sum[j]>=3) res1++; else break; } } else res1--; if(res1>=2) { sum[i]-=3; for(int j=1;j<res1;j++) { sum[i+j]-=3; res++; fjone(j+1,1); fjtwo(j+1,1); } for(int j=i;j<i+res1;j++) sum[j]+=3; } } } } void zd() { for(int i=1;i<=13;i++) { if(sum[i]==4) { sum[i]-=4; res++; fjtwo(2,1); sum[i]+=4; } } } void solve() { dui(); three(); one(); sz(); ld(); fj(); zd(); } char s[105]; int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); int t; scanf("%d",&t); while(t--) { memset(sum,0,sizeof(sum)); scanf("%s",s); int len=strlen(s); for(int i=0;i<len;i++) { if(s[i]>='3'&&s[i]<='9') sum[s[i]-'3'+1]++; else if(s[i]=='2') sum[13]++; else if(s[i]=='A') sum[12]++; else if(s[i]=='K') sum[11]++; else if(s[i]=='Q') sum[10]++; else if(s[i]=='J') sum[9]++; else if(s[i]=='T') sum[8]++; } res=0; solve(); printf("%d\n",res); } }
- 1
信息
- ID
- 1131
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者