//由于大小王可以是任何数,可以统计出非大小王的牌中缺少几个数字可以使手中的牌变成顺子,当大小王的数目多于缺少的牌时就可以了,前提是不能有相同的牌,注意!
题目描述:
LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。#include <iostream> #include <algorithm> using namespace std; int cmp(const void *a,const void *b) { return *(int *)a>=*(int *)b;//ascend the number,">=",soga! } int main() { int num; int count;//count the num of king int sum;//cout the num of the blank numbers of the array while(cin>>num&&num) { count=0; sum=0; int flag=1; int *array=new int[num]; for(int i=0;i<num;i++) cin>>array[i]; qsort(array,num,sizeof(int),cmp);//sort the number for(int i=0;i<num;i++)//count the number of the king if(array[i]==0)count++; for(int i=count;i<num-1;i++) { if(array[i+1]==array[i])//judge the same number { flag=0; break; } sum+=(array[i+1]-array[i]-1);//judge the blank number of the array } if(flag&&sum<=count)//no same number &&the number of king>the number of the blanks cout<<"So Lucky!"<<endl; else cout<<"Oh My God!"<<endl; } return 0; } /************************************************************** Problem: 1355 User: hndxztf Language: C++ Result: Accepted Time:40 ms Memory:1520 kb ****************************************************************/