//另外思路:首先排序,统计0的个数,统计空缺。
#include<iostream>
#include<string.h>
using namespace std;
void issequence(int sh[],int length)
{
int ch[14];
int sum=0;
memset(ch,0,sizeof(ch)); //映射一个数组,置0
for(int i=0;i<length;i++)//将牌值映射到数组中,数组元素大小代表牌的张数
{
if(sh[i]!=0 && ch[sh[i]]!=0) //如果牌重复即对子,则不算顺子
{
cout<<"N0";
return;
}
ch[sh[i]]++;
}
for(int i=1;i<14;i++)
{
if(ch[i]==1)//找除王以外最小牌值
{
for(int j=i;j<i+5&&j<14;j++)//5个数组元素进行计数,切记最大数组索引为13
sum+=ch[j];
if(sum==length-ch[0])//王的张数去填空缺,符合则YES
cout<<"Yes";
else
cout<<"N0";
return;
}
}
}
int main()
{
int sh[]={0,0,10,11,12};
issequence(sh,5);
return 0;
}
扑克牌的顺子
最新推荐文章于 2022-06-06 21:11:30 发布