每天一道算法题(22)——扑克牌的顺子
2015-07-16 10:12
381 查看
题目:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。思路:
设定王为0。统计非王的牌之间的空格数,若小于王的总数(对应填补),则为顺子。有任意一张牌大于2,为非顺子。代码:
bool process(const char* str=NULL){ if(!str||strlen(str)<5) return false; int* data=new int[14]; memset(data,0,14*sizeof(int));//使用之前一定初始化 while(*str!='\0') data[*str++ - '0']++;//统计牌数 int counter=0;//非王的牌的总数 int blank=0;//牌之间的空格数 bool flag=false; for(int i=1;i<14&&(counter<=5-data[0]);i++){ if(data[i]==1){//出现一张 counter++; flag=true; } else if(data[i]>1){//对子以及以上 delete []data; return false; } else if(flag)//牌之间空格数 blank++; } int king=data[0]; delete []data; if(blank<=king)//比较空格和king的张数 return true; else return false; }
相关文章推荐
- Android开发UI之补间动画-Tween Animation
- 谈人生(1)
- 把图片导出到excel中
- 杭电ACM2027java做法
- Android Activity和Fragment如何获取控件的高度和宽度
- 存储过程知多少
- 跳转页信息
- 社説 20150716 イラン核合意 中東安定への転換点になるか
- AdapterView与Adapter(三) --Cursor及CursorAdapter数据变化监听
- 内存测试Stream程序分析(一)--基本参数
- Android Studio无法检测到魅族手机的解决方法
- iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
- Swift中共有74个内建函数
- 页面性能测试&提升方式
- 0031 二维数组指针 推箱子代码实现
- 开源时序服务器influxdb使用
- DrawItem
- 详细分析JavaScript函数定义
- jsp和servlet映射关系
- Cron表达式