当前位置: 首页 > news >正文

oral_quiz-#扑克牌是不是顺子#

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#include <stdio.h>
#include <stdlib.h>

bool IfHavePair(int* cards, int length);
int compare(const void* arg1, const void* arg2);
bool IsContinous(int* cards, int length) {
	if(cards == NULL || length < 1)
		return false;
	//我们知道,length<=10的情况下,insSort的效率是最高的,
	//但是为了可扩展,还是用了stl的qsort

	qsort(cards, length, sizeof(int), compare);

	int numberOfZero = 0;
	int numberOfGap = 0;

	for(int i=0; i<length; ++i) {
		if(cards[i] == 0)
			numberOfZero++;
		else if(i<length-1)
			numberOfGap += cards[i+1]-cards[i]-1;
	}

	return !IfHavePair(cards, length) && numberOfZero >= numberOfGap ? true : false;
}

bool IfHavePair(int* cards, int length) {
	bool bHave = false;
	for(int i=0; i<length-1; ++i)
		if(cards[i] && cards[i+1] == cards[i]) {	//是大小王的话就不用比了
			bHave = true;
			break;
		}

	return bHave;
}

int compare(const void* arg1, const void* arg2) {
	return *(int*)arg1 - *(int*)arg2;
}

// ====================测试代码====================
void Test(const char* testName, int* numbers, int length, bool expected)
{
    if(testName != NULL)
        printf("%s begins: ", testName);

    if(IsContinous(numbers, length) == expected)
        printf("Passed.\n");
    else
        printf("Failed.\n");
}

void Test1()
{
    int numbers[] = {1, 3, 2, 5, 4};
    Test("Test1", numbers, sizeof(numbers) / sizeof(int), true);
}

void Test2()
{
    int numbers[] = {1, 3, 2, 6, 4};
    Test("Test2", numbers, sizeof(numbers) / sizeof(int), false);
}

void Test3()
{
    int numbers[] = {0, 3, 2, 6, 4};
    Test("Test3", numbers, sizeof(numbers) / sizeof(int), true);
}

void Test4()
{
    int numbers[] = {0, 3, 1, 6, 4};
    Test("Test4", numbers, sizeof(numbers) / sizeof(int), false);
}

void Test5()
{
    int numbers[] = {1, 3, 0, 5, 0};
    Test("Test5", numbers, sizeof(numbers) / sizeof(int), true);
}

void Test6()
{
    int numbers[] = {1, 3, 0, 7, 0};
    Test("Test6", numbers, sizeof(numbers) / sizeof(int), false);
}

void Test7()
{
    int numbers[] = {1, 0, 0, 5, 0};
    Test("Test7", numbers, sizeof(numbers) / sizeof(int), true);
}

void Test8()
{
    int numbers[] = {1, 0, 0, 7, 0};
    Test("Test8", numbers, sizeof(numbers) / sizeof(int), false);
}

void Test9()
{
    int numbers[] = {3, 0, 0, 0, 0};
    Test("Test9", numbers, sizeof(numbers) / sizeof(int), true);
}

void Test10()
{
    int numbers[] = {0, 0, 0, 0, 0};
    Test("Test10", numbers, sizeof(numbers) / sizeof(int), true);
}

// 有对子
void Test11()
{
    int numbers[] = {1, 0, 0, 1, 0};
    Test("Test11", numbers, sizeof(numbers) / sizeof(int), false);
}

// 鲁棒性测试
void Test12()
{
    Test("Test12", NULL, 0, false);
}

int main(int argc, char* argv[])
{
    Test1();
    Test2();
    Test3();
    Test4();
    Test5();
    Test6();
    Test7();
    Test8();
    Test9();
    Test10();
    Test11();
    Test12();

    return 0;
}



转载于:https://my.oschina.net/ITHaozi/blog/282826

相关文章:

  • Android使用百度地图的注意点
  • 移动互联网金融的全方位服务时代已经到来
  • 再读《精通css》03:引入和注释
  • 长假结束了
  • saltstack(九)returner
  • jdbc ResultSet 处理工具类DbUtil
  • 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、斜堆
  • web app开发——使用jQuery Mobile创建餐厅订餐应用
  • Python 格式符大聚会之​%r
  • 电压放大和电流放大区分
  • 未来地图,开启万物互联-华中雄
  • 搭建Struts框架
  • Windows下Lisp环境配置
  • 定时休息护眼神器(EyeDefender)护眼大法
  • android 屏幕适配问题
  • ES6指北【2】—— 箭头函数
  • #Java异常处理
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Akka系列(七):Actor持久化之Akka persistence
  • angular2开源库收集
  • CentOS6 编译安装 redis-3.2.3
  • Java 23种设计模式 之单例模式 7种实现方式
  • leetcode-27. Remove Element
  • overflow: hidden IE7无效
  • Python实现BT种子转化为磁力链接【实战】
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redis中的lru算法实现
  • session共享问题解决方案
  • storm drpc实例
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 分享一份非常强势的Android面试题
  • 构造函数(constructor)与原型链(prototype)关系
  • 力扣(LeetCode)22
  • 使用parted解决大于2T的磁盘分区
  • 思考 CSS 架构
  • 问题之ssh中Host key verification failed的解决
  • 一些关于Rust在2019年的思考
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Java数据解析之JSON
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #1014 : Trie树
  • #在 README.md 中生成项目目录结构
  • (07)Hive——窗口函数详解
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2)(2.10) LTM telemetry
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (function(){})()的分步解析
  • (solr系列:一)使用tomcat部署solr服务
  • (windows2012共享文件夹和防火墙设置
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (生成器)yield与(迭代器)generator