您的位置:首页 > Web前端

剑指offer——扑克牌的顺子

2014-09-06 16:39 246 查看
思想:

1、先将输入的几个数进行排序,sort函数是#include<algorithm>下的。

2、统计0的个数,以及相邻数的差值,比较0的个数及差值的和。看是否可以用大王填充中间的差值。

#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <string>
using namespace std;

bool IsContinuous(int *numbers,int length)
{
if(numbers==NULL || length<1)
return false;

sort(numbers,numbers+length);

int NumOfZero = 0;        //0的个数
int NumOfGap = 0;  //空缺的个数
int i;
for(i=0;i<length-1;i++)
{
if(numbers[i] == 0)
NumOfZero++;
else
{
if(numbers[i] == numbers[i+1])
return false;
else
NumOfGap += numbers[i+1]-numbers[i]-1;
}
}
return (NumOfGap>NumOfZero)?false:true;
}

int main()
{
int n;
int arr[15];
memset(arr,0,sizeof(arr));
while(scanf("%d",&n)!=EOF && n!=0)
{
int i;
for(i=0;i<n;i++)
scanf("%d",arr+i);

bool can = IsContinuous(arr,n);
if(can)
printf("So Lucky!\n");
else
printf("Oh My God!\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: