代码:
#include <iostream>
using namespace std;
int compare(const void* arg1, const void* arg2)
{
return *(int*)arg1 - *(int*)arg2;
}
bool IsContinusCards(int* pCards, int nLength)
{
if (pCards == nullptr || nLength <= 0)
return false;
int num_of_zero = 0; //记录0的数量
int gap_of_adjacent = 0; //记录相邻数字之差
qsort(pCards, nLength, sizeof(int), compare);
//统计0的个数
for (int i = 0; i < nLength; i++)
{
if (pCards[i] == 0)
{
num_of_zero++;
}
}
//统计相邻数字之差
int pre = num_of_zero;
int cur = num_of_zero + 1;
while (cur < nLength)
{
//两个数相等是对子,不可能是顺子
if (pCards[pre] == pCards[cur])
return false;
gap_of_adjacent = pCards[cur] - pCards[pre] - 1;
pre = cur;
++cur;
}
return (num_of_zero > gap_of_adjacent) ? true : false;
}
int main()
{
int pCard[] = { 0, 1, 0, 4, 5 };
int nLength = sizeof(pCard) / sizeof(pCard[0]);
cout <<"扑克牌是否是顺子: "<< boolalpha<<IsContinusCards(pCard, nLength);
cout << endl;
system("pause");
return 0;
}
测试: