首页 > 代码库 > 编程算法 - 扑克牌的顺子 代码(C)
编程算法 - 扑克牌的顺子 代码(C)
扑克牌的顺子 代码(C)
本文地址: http://blog.csdn.net/caroline_wendy
题目: 从扑克牌中随机抽取5张牌, 判断是不是一个顺子, 即这5张牌是不是连续的.
2~10为数字本身, A为1, J为11, Q为12, K为13, 而大小王可以看成任意数字.
排序, 判断字符串之间的间隔数, 如果小于等于大小王的数量, 则是连续, 否则不是.
代码:
/* * main.cpp * * Created on: 2014.7.12 * Author: spike */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> using namespace std; int compare(const void* num1, const void* num2) { return *(int*)num1-*(int*)num2; } bool IsContinuous(int* numbers, int length) { if (numbers == NULL || length < 1) return false; qsort(numbers, length, sizeof(int), compare); int numberOfZero = 0; int numberOfGap = 0; for (int i=0; i<length&&numbers[i]==0; ++i) ++numberOfZero; int small = numberOfZero; int big = small+1; while(big < length) { if (numbers[small] == numbers[big]) return false; numberOfGap += numbers[big] - numbers[small]-1; small = big; ++big; } return (numberOfGap>numberOfZero) ? false : true; } int main(void) { int numbers[] = {0, 3, 1, 4, 5}; bool result = IsContinuous(numbers, 5); printf("result = %s\n", result ? "true" : "false"); return 0; }
输出:
result = true
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。