2019沈阳网络赛H-Texas hold'em Poker(大模拟)

题目链接-H

 

存每种牌的出现次数,然后从大到小找,用多个ans数组存大小。虽然代码长但是很稳

WA点:

①10不能算两个字符,应该拆开考虑

②相同时候,多开个数组记录。

#include
using namespace std;

int a[100010][14];
int sum[100010];
string name[100010],val[100010];
struct p{
    string name;
    int ans1,ans2,ans3,ans4;
    //int sum;
    //int a[13];
}p1[100010];

bool cmp(p x,p y){
    if(x.ans1!=y.ans1)return x.ans1y.ans2;
    else if(x.ans3!=y.ans3)return x.ans3>y.ans3;
        else if(x.ans4!=y.ans4)return x.ans4>y.ans4;
    else return x.name=5;i--){
        if(a[k][i]&&a[k][i-1]&&a[k][i-2]&&a[k][i-3]&&a[k][i-4])return i;
    }
 
        return -1;
}
int four(int k){
    for(int i=13;i>=1;i--){
        if(a[k][i]==4)return i;
    }
    return -1;
}
int ful(int k){
    int flag=0;
    int flag1=0;
    for(int i=13;i>=1;i--){
        if(a[k][i]==3)flag=i;
        if(a[k][i]==2)flag1=i;
    
    }
    if(flag1&&flag)return flag;
    return -1;
}
int three(int k){
    for(int i=13;i>=1;i--){
        if(a[k][i]==3)return i;
    }
    return -1;
}
int twop(int k){
    int flag=0;
    int max1=-1;
    for(int i=13;i>=1;i--){
        if(a[k][i]==2)max1=max(i,max1),flag++;
    }
    if(flag==2)return max1;
    else return -1;
}
int two(int k){
    for(int i=13;i>=1;i--){
        if(a[k][i]==2)return i;
    }
    return -1;
}
int sum1(int k){
    int len=(val[k].length());
    for(int i=0;i=1;i--){
            if(a[k][i]==1)return i;
        }
    }
    else if(type1==4){
        for(int i=13;i>=1;i--){
            if(a[k][i]==2)return i;
        }
    }
    else if(type1==5){
        int sum=0;
        for(int i=13;i>=1;i--){
            if(a[k][i]==1)sum+=i;
        }
        return sum;
    }
    else if(type1==6){
        for(int i=1;i<=13;i++){
            if(a[k][i]==2)return i;
        }
    }
    else if(type1==7){
        int sum=0;
        for(int i=13;i>=1;i--){
            if(a[k][i]==1)sum+=i;
        }
        return sum;
    }
    else if(type1==8){
        return sum[k];
    }
}

int yu2(int k){
  
        for(int i=13;i>=1;i--){
            if(a[k][i]==1)return i;
        }
    
}
//3
//Alice AAA109
//Bob 678910
//Boa 678910

int main(){
    int n;
    cin>>n;
    for(int i=0;i>p1[i].name>>val[i];
        sum1(i);
        if(maxshun(i)!=-1)p1[i].ans1=1;
        else if(shun(i)!=-1)p1[i].ans1=2,p1[i].ans2=shun(i);
        else if(four(i)!=-1)p1[i].ans1=3,p1[i].ans2=four(i),p1[i].ans3=yu(i,3);
        else if(ful(i)!=-1)p1[i].ans1=4,p1[i].ans2=ful(i),p1[i].ans3=yu(i,4);
        else if(three(i)!=-1)p1[i].ans1=5,p1[i].ans2=three(i),p1[i].ans3=yu(i,5);
         else if(twop(i)!=-1)p1[i].ans1=6,p1[i].ans2=twop(i),p1[i].ans3=yu(i,6),p1[i].ans4=yu2(i);
             else if(two(i)!=-1)p1[i].ans1=7,p1[i].ans2=two(i),p1[i].ans3=yu(i,7);
        else p1[i].ans1=8,p1[i].ans2=yu(i,8);
    }
    sort(p1,p1+n,cmp);
 
        for(int i=0;i

 

你可能感兴趣的:(比赛,—————基础—————)