【剑指offer】直扑克
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27849055
- 题目描写叙述:
-
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决定去买体育彩票啦。
如今,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气怎样。
为了方便起见,你能够觉得大小王是0。
- 输入:
-
输入有多组数据。
每组数据包括两行,第一行输入一个正数n(0<=n<=14),表示从扑克牌中抽出的扑克牌数。接下来的一行输入n个数,表示从这幅扑克牌中抽出的牌。
假设n=0,则结束输入。
- 输出:
-
相应每组数据,假设抽出的牌是顺子,则输出“So Lucky!”。
否则,输出“Oh My God!”。
- 例子输入:
-
5
3 5 1 0 4
5
3 5 4 7 6
5
3 5 7 4 8
0
- 例子输出:
-
So Lucky!
So Lucky!
Oh My God!
九度上把这道题目改成了一副扑克牌有4张大小王。这里姑且无论它最多几个0,就题目来说,不严谨,非常含糊,比方这里没有对顺子给出比較严谨的定义,5个下面的连续数字算是顺子吗?现实中要至少5个才算顺子的,并且假设假设3个牌也算顺子,那假设输入的是3个0呢,这有点太牵强了!看论坛里面好多人吐槽。总之,无论那么多。这道题目无论它怎么坑爹,用剑指offer上的思路写的代码AC是没问题的,由于这里无论你0有多少个(仅仅要不大于数组的长度就可)都OK。
我之前想避开排序,或者开辟哈希数组。就遍历一遍求出最大值,最小值,0出现的次数,而后依据三者间的关系来推断是否构成顺子,但这要在数组中没有反复元素的前提下,而要推断数组中没有反复元素,要么要排序。要么就要借助哈希数组统计元素出现的次数,终于还是省不掉。无奈最后还是用书上的思路,为求代码的简洁性。一样用C语言自带的高速排序函数,当然用计数排序(事实上跟开辟哈希数组就是一个思路)更快点,但对n最大为14的情况,二者效率差不了太多。
AC代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h> int mycompare(const void *data1,const void *data2)
{
return *(int *)data1 - *(int *)data2;
} bool IsContinuous(int *arr,int len)
{
if(arr==NULL || len<1)
return false; qsort(arr,len,sizeof(int),mycompare); int NumOf0 = 0; //0的个数
int NumOfGap = 0; //空缺的个数
int i;
for(i=0;i<len-1;i++)
{
if(arr[i] == 0)
NumOf0++;
else
{
if(arr[i] == arr[i+1])
return false;
else
NumOfGap += arr[i+1]-arr[i]-1;
}
}
return (NumOfGap>NumOf0)?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;
}
/************************************************************** Problem: 1355 User: mmc_maodun Language: C Result: Accepted Time:0 ms Memory:912 kb****************************************************************/
版权声明:本文博客原创文章,博客,未经同意,不得转载。
【剑指offer】直扑克的更多相关文章
- 面试题目——《剑指Offer》
1.把一个字符串转换成整数——<剑指Offer>P29 2.求链表中的倒数第k个结点——<剑指Offer>P30 3.实现Singleton模式——<剑指Offer> ...
- [读]剑指offer
研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作.看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本<剑指offer>.在此顺便将自己做题所想 ...
- 剑指Offer——美团内推+校招笔试题+知识点总结
剑指Offer--美团内推+校招笔试题+知识点总结 前言 美团9.9内推笔试.9.11校招笔试,反正就是各种虐,笔试内容如下: 知识点:图的遍历(DFS.BFS).进程间通信.二叉查找树节点的删除及中 ...
- 【Java】 剑指offer(26) 树的子结构
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入两棵二叉树A和B,判断B是不是A的子结构. 思路 1)先对A树 ...
- 剑指offer第六章
剑指offer第六章 1.数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在数组中出现了4次,所以输出4 分析:思路1 ...
- 剑指Offer - 九度1504 - 把数组排成最小的数
剑指Offer - 九度1504 - 把数组排成最小的数2014-02-06 00:19 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输 ...
- 剑指Offer - 九度1522 - 包含min函数的栈
剑指Offer - 九度1522 - 包含min函数的栈2013-12-01 23:44 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测 ...
- 【读书笔记】剑指offer
导语 所有的编程练习都在牛客网OJ提交,链接: https://www.nowcoder.com/ta/coding-interviews 九章算法的 lintcode 也有这本书的题目.https: ...
- [Leetcode]225. 用队列实现栈 、剑指 Offer 09. 用两个栈实现队列
##225. 用队列实现栈 如题 ###题解 在push时候搞点事情:push时入队1,在把队2的元素一个个入队1,再交换队2和队1,保持队1除pushguocheng 始终为空. ###代码 cla ...
随机推荐
- HDU 1284 钱币兑换问题 母函数、DP
题目链接:HDU 1284 钱币兑换问题 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- 机器学习01-kNN邻近算法
k-近邻算法 概述:k-近邻算法採用測量不同特征值之间的距离方法进行分类 长处:精度高.对于异常值不敏感.无数据输入假定 缺点:计算复杂度高,空间复杂度高,而且它没有办法各处基础数据的一些内部信息数据 ...
- mysql查询字段所在表
use information_schema;select * from columns where column_name='字段名' ;
- 利用Powershell获取公司内部机器的资源信息,作为企业兴许资产管理的基本途径!
今天一个哥们问我是否用Powershell 实现.我好久没有写脚本,脚本的协作和调试还是费了一些时间,兴许调试了下.运作没有问题,大家能够參考以下的脚本来丰富您企业须要做的一些事情,脚本代码例如以下: ...
- [Grid Layout] Describe a grid layout using named grid lines
We can use named grid lines to describe our grid layout. Let’s see how to apply this to our grid-tem ...
- mui列表跳转到详情页优化方案
原理 因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而:因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候 ...
- android 滚动栏下拉反弹的效果(相似微信朋友圈)
微信朋友圈上面的图片封面,QQ空间说说上面的图片封面都有下拉反弹的效果,这些都是使用滚动栏实现的.下拉,当松开时候.反弹至原来的位置.下拉时候能看到背景图片.那么这里简介一下这样的效果的实现. 本文源 ...
- MySQL经常使用的面试题
1.怎样登陆mysql数据库 MySQL -u username -p 2.怎样开启/关闭mysql服务 service mysql start/stop 3.查看mysql的状态 service m ...
- 通过rinetd实现port转发来訪问内网的服务
一. 问题描写叙述 通过外网来訪问内网的服务 二. 环境要求 须要有一台能够外网訪问的机器做port映射.通过数据包转发来实现外部訪问阿里云的内网服务 三. 操作方法 做port映射的方案 ...
- 小强的HTML5移动开发之路(24)—— PhoneGap Android开发环境搭建
有关JDK及Android开发环境的搭建请看我前面的博文:http://blog.csdn.net/dawanganban/article/details/9748497 一.下载PhoneGap 下 ...