红温三次换来的代码
2024-08-20 17:06:10
发布于:广东
71阅读
0回复
0点赞
首先,为那些被我的红温影响到的X03森林湖1班的同学们道歉,非常抱歉,为我的失态道歉。
看在座各位都是用数组暴力枚举,实际上,我们可以用桶排的思想,列四种花色的数组,然后对应相同花色的位置+1。
这样可以很容易的写几个循环来进行判断,每次判断的时间复杂度最坏是O(13)(省去系数O(1))
具体思路自己解析代码吧,刚红温完,不想说什么了。
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<char, int> mp={{'2',2},{'3',3},{'4',4},{'5',5},{'6',6},{'7',7},{'8',8},{'9',9},{'T',10},{'J',11},{'Q',12},{'K',13},{'A',14}};int q;cin>>q;
while(q--)
{
vector<int> S(15,0), H(15,0), C(15,0), D(15,0);
char c1,c2;
for(int i=1;i<=7;i++)
{
string s;
cin>>s;
c1=s[0];
c2=s[1];
if(c2=='S')
{
if(c1!='A') S[mp[c1]]++;
else
{
S[mp[c1]]++;
S[1]++;
}
}
if(c2=='H')
{
if(c1!='A') H[mp[c1]]++;
else
{
H[mp[c1]]++;
H[1]++;
}
}
if(c2=='C')
{
if(c1!='A') C[mp[c1]]++;
else
{
C[mp[c1]]++;
C[1]++;
}
}
if(c2=='D')
{
if(c1!='A') D[mp[c1]]++;
else
{
D[mp[c1]]++;
D[1]++;
}
}
}
//for(auto i:S) cout<<i<<' ';
//cout<<'\n';
//for(auto i:H) cout<<i<<' ';
//cout<<'\n';
//for(auto i:D) cout<<i<<' ';
//cout<<'\n';
//for(auto i:C) cout<<i<<' ';
//cout<<'\n';
if((S[14]&&S[13]&&S[12]&&S[11]&&S[10])||(H[14]&&H[13]&&H[12]&&H[11]&&H[10])||(C[14]&&C[13]&&C[12]&&C[11]&&C[10])||(D[14]&&D[13]&&D[12]&&D[11]&&D[10]))
{
cout<<"ROYAL FLUSH"<<'\n';
continue;
}
bool f=false;
for(int i=1;i<=10;i++)
{
if((S[i]&&S[i+1]&&S[i+2]&&S[i+3]&&S[i+4])||(H[i]&&H[i+1]&&H[i+2]&&H[i+3]&&H[i+4])||(C[i]&&C[i+1]&&C[i+2]&&C[i+3]&&C[i+4])||(D[i]&&D[i+1]&&D[i+2]&&D[i+3]&&D[i+4]))
{
cout<<"STRAIGHT FLUSH"<<'\n';
f=true;
break;
}
}
if(f) continue;
f=false;
for(int i=1;i<=14;i++)
{
if(S[i]+H[i]+D[i]+C[i]==4)
{
cout<<"FOUR OF A KIND"<<'\n';
f=true;
break;
}
}
if(f) continue;
f=false;
int mark=0;
int ts=0,tw=0;
for(int i=1;i<=13;i++)
{
if(S[i]+H[i]+D[i]+C[i]==3&&!mark)
{
ts++;
mark = 1;
}
else if(S[i]+H[i]+D[i]+C[i]==2)
{
tw++;
}
}
if(ts&&tw)
{
cout<<"FULL HOUSE"<<'\n';
continue;
}
int s=0,h=0,d=0,c=0;
for(int i=1;i<=13;i++)
{
s+=S[i];
h+=H[i];
d+=D[i];
c+=C[i];
}
if(s>=5||h>=5||d>=5||c>=5)
{
// cout<<q<<'\n';
cout<<"FLUSH"<<'\n';
f=true;
}
if(f) continue;
f=false;
for(int i=1;i<=9;i++)
{
if((S[i]||H[i]||D[i]||C[i])&&(S[i+1]||H[i+1]||D[i+1]||C[i+1])&&(S[i+2]||H[i+2]||D[i+2]||C[i+2])&&(S[i+3]||H[i+3]||D[i+3]||C[i+3])&&(S[i+4]||H[i+4]||D[i+4]||C[i+4]))
{
cout<<"STRAIGHT"<<'\n';
f=true;
break;
}
}
if(f) continue;
f=false;
if(ts)
{
cout<<"THREE OF KIND"<<'\n';
continue;
}
int cnt = 0;
for(int i=1;i<=13;i++)
{
if(S[i]+H[i]+D[i]+C[i]==2) cnt++;
}
if(cnt>=2)
{
cout<<"TWO PAIR"<<'\n';
continue;
}
if(cnt==1)
{
cout<<"ONE PAIR"<<'\n';
continue;
}
cout<<"HIGH CARD"<<'\n';
}
}
全部评论 6
其实你的红温并没有影响我们,主要是旁边那个byd抽象狗玩意天天在那叫
2024-08-20 来自 广东
2?天才
2024-11-24 来自 广东
0我也要红温了
2024-08-22 来自 浙江
0搞一半玩失踪
2024-08-22 来自 浙江
0你个啊米诺斯
2024-08-22 来自 浙江
0谢谢
2024-08-20 来自 广东
0
有帮助,赞一个