剑指offer——扑克牌的顺子

思想:

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

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

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 using namespace std;
 6 
 7 
 8 bool IsContinuous(int *numbers,int length)
 9 {
10     if(numbers==NULL || length<1)
11         return false;
12 
13     sort(numbers,numbers+length);
14 
15     int NumOfZero = 0;        //0的个数
16     int NumOfGap = 0;  //空缺的个数
17     int i;
18     for(i=0;i<length-1;i++)
19     {
20         if(numbers[i] == 0)
21             NumOfZero++;
22         else
23         {
24             if(numbers[i] == numbers[i+1])
25                 return false;
26             else
27                 NumOfGap += numbers[i+1]-numbers[i]-1;
28         }
29     }
30     return (NumOfGap>NumOfZero)?false:true;
31 }
32 
33 int main()
34 {
35     int n;
36     int arr[15];
37     memset(arr,0,sizeof(arr));
38     while(scanf("%d",&n)!=EOF && n!=0)
39     {
40         int i;
41         for(i=0;i<n;i++)
42             scanf("%d",arr+i);
43         
44         bool can = IsContinuous(arr,n);
45         if(can)
46             printf("So Lucky!\n");
47         else
48             printf("Oh My God!\n");
49     }
50     return 0;
51 }

 



 

posted @ 2014-09-06 16:39  啵啵那个臭  阅读(153)  评论(0编辑  收藏  举报