/*
题意就是写一个函数 输入是一个数组
判断这个数组是不是扑克牌的顺子 注意0可以代表任何数字
三步 一 排序 二 统计0的个数
三 看其余部门 相邻元素之间差多少
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
int cmp(const void * p1,const void * p2)
{
return *(int *)p1 - *(int *)p2;//这里又写出bug了 从小到大是 - 不是<
}
bool IsContinuous(int * arr,int len)
{
if(arr==NULL || len<=0)
return false;
qsort(arr,len,sizeof(int),cmp);
int numofzero=0;
int numofgap=0;
for(int i=0;i<len && arr[i]==0;++i)
numofzero++;
int small=numofzero;
int big=small+1;
while(big<len)
{
if(arr[small]==arr[big])
return false;
numofgap+=arr[big]-arr[small]-1;
small=big;
big++;
}
return numofzero>=numofgap?true:false;
}
int main()
{
int arr[]={1,2,0,3,5};
int len=sizeof(arr) /sizeof arr[0];
if(IsContinuous(arr,len))
printf("yes\n");
else
printf("no\n");
return 0;
}