思想:
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;
}