44 - 判断扑克牌是否是顺子
2015-07-30 16:55
661 查看
题目:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
首先应该对该问题做数据抽象,5张普通牌可以用数字代替,大小王是特殊牌,我们可以用 0 代替。将大小王和普通牌分离。
检查是否是顺子:
首先应该进行排序,然后统计 0 的个数, 最后统计相邻数字之间的间隔个数。
如果 0 的次数 大于等于 间隔的次数,则是顺子,否则不是顺子。另外,如果出现非0外的相同的数,即对子,则不是顺子。
如:{0,1,3,4,5} 中 0 的个数为 1, 间隔个数为 1,则是顺子;
{0,1,3,4,6}中 0 的个数为 1, 间隔个数为 2,则不是顺子;
输出结果:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
首先应该对该问题做数据抽象,5张普通牌可以用数字代替,大小王是特殊牌,我们可以用 0 代替。将大小王和普通牌分离。
检查是否是顺子:
首先应该进行排序,然后统计 0 的个数, 最后统计相邻数字之间的间隔个数。
如果 0 的次数 大于等于 间隔的次数,则是顺子,否则不是顺子。另外,如果出现非0外的相同的数,即对子,则不是顺子。
如:{0,1,3,4,5} 中 0 的个数为 1, 间隔个数为 1,则是顺子;
{0,1,3,4,6}中 0 的个数为 1, 间隔个数为 2,则不是顺子;
#include <iostream> #include <algorithm> using namespace std; bool IsContinuous(int nums[], int length) { if (nums == NULL || length < 5) return false; sort(nums, nums+length); //注意排序范围是 [pBegin, pEnd), 不包括 pEnd int zero_counts = 0; // 0 的个数 int gap_counts = 0; // 间隔的个数 int i = 0; // 统计 0 的个数 while (i < length && nums[i] == 0) { zero_counts++; i++; } // 统计间隔 int prev = nums[i++]; for (; i < length; i++) { if (nums[i] == prev) // 相等,不存在顺子 return false; gap_counts += (nums[i] - prev - 1); prev = nums[i]; } if (zero_counts >= gap_counts) return true; else return false; } int main() { const int len = 5; int nums1[] = {1,4,5,0,0}; int nums2[] = {1,3,4,5,0}; int nums3[] = {1,3,4,4,0}; int nums4[] = {1,3,4,6,0}; cout << IsContinuous(nums1, len) << endl; cout << IsContinuous(nums2, len) << endl; cout << IsContinuous(nums3, len) << endl; cout << IsContinuous(nums4, len) << endl; }
输出结果:
1 1 0 0 [Finished in 0.7s]
相关文章推荐
- SAP价格 SAP系统价格 SAP ERP软件报价是多少?
- 学习笔记(八)对象的集合(三)
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- hdu4597 (博弈dp)play game
- 基于sparksql调用shell脚本执行SQL
- 配置MySQL使用HugePages
- 设计模式C++实现(2)——策略模式
- Python UnicodeEncodeError: 'gbk' codec can't encode character u'\ufeff' in position 0:
- NoSuchMethodException问题总结
- iOS 应用名称的国际化图解
- Android Wifi方法大全
- leetCode 99.Recover Binary Search Tree(修正二叉搜索树) 解题思路和方法
- 怎样判断一个字符,在另一个字符串中
- LNMP安装日志
- 数组排序
- NoSuchMethodException问题总结
- Spark工作机制-通信模块
- 那些年我们一起清除过的浮动
- spring中IOC是什么意思 个人觉得解释的非常有意思
- eclipse打开文件位置插件