算法习题67(1):扑克牌顺子游戏
来源:互联网 发布:统计与自然语言java 编辑:程序博客网 时间:2024/04/29 16:50
扑克牌的顺子
从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意数字。
-----------------------------------
炸一看,这题并不难,不过仔细想想,该如何表示这个结构呢?
一开始,想尝试用链表,把牌数字按顺序排序好,如果是司令则记录司令的牌数,遍历数据链表,如果前后差==0,则error退出,
如果前后差==1,指针后移,如果前后差>1,则判断司令数<=0则error退出,否则司令牌数--,同时加入一个司令替换的牌到链表,再次比较前后差,这样可以找到最后的结果。
先麻烦,想直接用数组来完成,这里先定义一个数组,a[13]把抽到的牌对应a[i]置为1,然后找到最大和最小位置,
假设从最小位置开始向后找,同理如果出现不连续的,利用司令来解决,解决不了退出
当然也可以从最大位置向前找,
可是,如果出现
J Q K 司令 司令 从前向后找会发现找不到,从后向前找是可以的
所以这里需要判断下最小元素是否和13差小于5了
逻辑清楚了,接下来就是牌和数字的对应,我这里假设0-12 对应A 2 3.. J Q K 13 14代表正鬼负鬼
我这里就只从这些里去,不是一副牌
//============================================================================// Name : PlayCard.cpp// Author : YLF// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>//#include <random>#include <stdlib.h>#include <time.h>using namespace std;int main() {srand((unsigned int)time(NULL));int input[5];int i = 0;for(i=0;i<5;i++){input[i] = (int)(1.0*rand()/RAND_MAX*14);cout<<input[i]<<" ";}cout<<endl;//input 0-12 means A-K 13 14 means the guiint a[13]={0}, count = 0, guiNum = 0 , minIdx=13, maxIdx = 0;for(i=0;i<5;i++){if(input[i] >= 13){guiNum++;//count for the guicontinue;}if(input[i]<minIdx)minIdx = input[i];if(input[i]>maxIdx)maxIdx = input[i];a[input[i]]=1;}//find the continuecount=1;//区分应该从后面开始还是前面bool nor_flag = true;if(13-minIdx<5){i=maxIdx-1;nor_flag = false;}elsei = minIdx+1;while(count!=5){if(nor_flag && i>=13)break;if(!nor_flag && i<0)break;if(a[i] == 0){//look for guiif(guiNum>0){guiNum--;i = nor_flag?i+1:i-1;count++;continue;}elsebreak;}count++;i = nor_flag?i+1:i-1;}//judgeif(count<5)cout<<"no continue!!"<<endl;elsecout<<"continue!!"<<endl;return 0;}
11 12 7 8 3 no continue!!
11 9 8 7 10 continue!!
- 算法习题67(1):扑克牌顺子游戏
- 算法题/扑克牌顺子
- 算法题目---扑克牌的顺子
- 算法:扑克牌的顺子问题
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- UIScrollView setContentOffset: animated:YES 偶尔卡顿解决方案
- 进程上下文和中断上下文的区别
- ORA-12154:TNS:无法解析指定的连接标识符
- 十三周——汉诺塔
- 【代码】有关于数据转移方面的新总结
- 算法习题67(1):扑克牌顺子游戏
- MySQL 巧写sql提高rand随机查询速度
- java -cp .bin文件运行
- jQuery——jQuery基础方法first()/last()/not(CSS选择器)/even/odd/eq(index)/gt(index)/lt(index)
- 写样式时不要图一时省事而忽略背景色的声明
- android 关于jni调用出错的那些事
- Android APK软件修改教程,由odex文件生成classes.dex
- java数据库基本操作
- HashTable HashMap TreeMap 区别