是不是一个顺子,即这5张判断扑克牌是否为顺子不是连续的.2

java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大的相关文章推荐 - 互联网 - ITeye专栏频道
package com.ljn.
import java.util.A
import java.util.R
public class ContinuousPoker {
* Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
* 2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
private static final int[] poker = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
一、系统说明:
本系统是对现实中跑得快游戏的模拟,加入了对各中出牌组合的判断,并参考了当前比较流行的一些扑克牌游戏进行设计
二、模块说明:
发牌模块:
1.生成52张牌,每种花色13张
2.生成随机数,每个玩家根据生成的随机数去52张牌里面取一张,并将这一张从52张里面删除,重复该过程,直到每个玩家拥有
给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复
呵呵,我采用笨办法:先用一个循环找出数字中的最大值和最小值,然后从最小到最大值在数组中循环查找对应数字,只要有一个数没有找到,就返回false,如果都找到了,就返回true.
public boolean
isContinousArr ...
原题目:实现一个函数:最长顺子;输入很多个整数(1&=数值&=13),返回其中可能组成的最长的一个顺子(顺子中数的个数代表顺的长度);
其中数字1也可以代表14; 顺子包括单顺\双顺\3顺;单顺的定义是连续5个及以上连续的数,比如1,2,3,4,5、3,4,5,6,7,8和10,11,12,13,1等;
双顺的定义是连续3个及以上连续的对(对:两个相同的数被称为对),比如1,1,2, ...
24点游戏规则:任取1-9之间的4个数字,用+-*/()连结成算式,使得式子的计算结果为24。估计很多人都玩过用扑克牌玩的那种,印象中10也算在内的,两人各出2张牌,谁先算出来谁赢,赢家收回已经算过的4张牌。最后看谁手里的牌多。
这个程序实现使用穷举的方法,将所有可能的排列穷举出来,最后将每个排列中计算出结果。计算结果时,将前两个作为一组、后两个数作为一组,分别计算出各组的结果,再对获得的两个组结果 ...
自从MongoDB被越来越多的大型关键项目采用后,数据分析也成为了越来越重要的话题。人们似乎已经厌倦了使用不同的软件来进行分析(这都利用到了Hadoop),因为这些方法往往需要大规模的数据传输,而这些成本相当昂贵。 MongoDB提供了2种方式来对数据进行分析:Map Reduce(以下简称MR)和聚合框架(Aggregation Framework)。MR非常灵活且易于使用,它可以很好地与分片(s ...
众所周知,JavaScript是一门非常流行的编程语言,开发者用它不仅可以开发出炫丽的Web程序,还可以用它来开发一些移动应用程序(如PhoneGap或Appcelerator),它还有一些服务端实现,比如NodeJS、Wakanda以及其它实现。此外,许多开发者都会把JavaScript选为入门语言,使用它来做一些弹出窗口等小东西。 在这篇文章中,作者将会向大家分享JavaScript开发的小技 ...
Chris Lloyd创建了一个有趣的演示,使用CoffeeScript 和 Raphael随机出现的图形:
选择coffee:
for tag in document.getElementsByTagName('script') when tag.type is 'text/x-artwork' eval(CoffeeScript.compile(tag.innerHTML))
jQuery里提供了许多创建交互式网站的方法,在开发Web项目时,开发人员应该好好利用jQuery代码,它们不仅能给网站带来各种动画、特效,还会提高网站的用户体验。 本文收集了15段非常实用的jQuery代码片段,你可以直接复制黏贴到代码里,但请开发者注意了,要理解代码再使用哦。下面就让我们一起来享受jQuery代码的魅力之处吧。 1.预加载图片 (function($) { var cache ...
一些Java面试中经常出现的算法题
1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序
本题的splitStringByComma(String )方法纯属多余,可以用String的split方法一句话代替,且可读性也更强,下面的一段话源自JDK1.6API,StringTokenizer类已不再提倡使用,保留仅为旧代码。
StringTokenizer 是出于兼容性的 ...
Accept: 90Submit: 263Time Limit: 1000 mSecMemory Limit : 32768 KB
Problem Description
In poker, you have 5 cards. There are 10 kinds of poker hands (from highest to lowest):1. royal flush -- ac ...
一,颠倒栈。
1)题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
2)分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一 ...
一,颠倒栈。
1)题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
2)分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一 ...
这道题在javaeye上好像见过, 估计是一家公司的面试. 呵呵. 题目要求输入一个大于1的数字, 按顺时针转圈圈打印数字, 打印的数字范围从1到这个数字的平方, 本人苦思半天做了出来, 面试的说代码太长了. 求更简单方法. 如输入数字5, 则打印如下形式的数字 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 如输入 ...
boolean end=
Random ran=new Random();
s=ran.nextInt(9999);
if(1000&s && s&9999){
}while(!end);
System.out.println(&会员编号:&+s);
从一副扑克牌(52张)中任意抽出4张牌(数字1-13表示),用加、减、乘、除的方法使结果等于24,每张牌只能用一次,写出算法或程序。
想得到77到578之间的随机数,用java实现, (结果里可能有77或578,即不能最大只显示577,最小到76) 不用Random类,用Math的random方法应该怎么写? 谢谢!
gtgrid分页按钮不能显示但点击相关区域有反应
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8& /&
&meta http-equiv=&Pragma& content=&qu ...
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to
堆排序(利用最大堆) import java.math.BigI /** * 最大堆最小堆性质: * 完全二叉树 * left=2i; * right=2i+1; * 最大堆:除根节点外,子节点&父节点 * 最小堆:除根节点外,子节点&父节点 * 堆排序算法复杂度:o(n*lgn) * * @author B.Chen * */ public
2class zyfsort {
3 public static void main (String[] args) {
4 int gohome[] = new int[]{12,7,54,21,1,4,65,76,34,9,3,6};
5 System.out.println(&插入排序算法&);
6// InsertionSort(gohome);
发布一个最新版coos核心代码 完整版本请到google code开源项目上下载 google.code网址:http://code.google.com/p/coos/
/** * @author zdz8207 * 通用面向对象脚本库 * @version 0.2 * */ var coos = function(){this.version = &0.2&q ...
Struts2 提供了一个内置的验证功能来校验用户输入的信息。这些功能足够适用于一般的web应用程序。但在某些情况下,这些标准的验证功能不足以验证复杂的业务逻辑。为了验证复杂的业务逻辑,struts2校验框架可以通过扩展来创建自定义的验证功能。 本章论述struts2中所有可用的验证功能。之后的章节将通过例子来论述这些验证功能。 验证规则 :
验证规则是struts2程序的一个主要部分,包含了对用 ...
第九章 函数式的Javascript
要说JavaScript和其他较为常用的语言最大的不同是什么,那无疑就是JavaScript是函数式的语言,函数式语言的特点如下: 函数为第一等的元素,即人们常说的一等公民。就是说,在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。 函数可以保持自己内部的数据,函数的运算对外部无副作用(修改了外部的 ...
第九章 函数式的Javascript
要说JavaScript和其他较为常用的语言最大的不同是什么,那无疑就是JavaScript是函数式的语言,函数式语言的特点如下: 函数为第一等的元素,即人们常说的一等公民。就是说,在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。 函数可以保持自己内部的数据,函数的运算对外部无副作用(修改了外部的 ...使用C语言求解扑克牌的顺子及n个骰子的点数问题
更新日期:
这篇文章主要介绍了使用C语言求解扑克牌的顺子及n个骰子的点数问题的方法,解答实例主要为了突出解题的算法,需要的朋友可以参考下扑克牌的顺子&&& 问题描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。&&&&&&&& 思路:可以将这5张牌排个序,然后统计出0的个数以及非0数字之间的间隔数,如果出现重复的非0数字,那么不是顺子。如果间隔数小于等于0的个数,那么是顺子。暂时未想到更好的办法。&&&&&&&& 参考代码:
//函数功能 : 从扑克牌中随机抽5张牌,判断是不是一个顺子
//函数参数 : pCards为牌,nLen为牌的张数
//返回值 : 是否顺子
bool IsContinuous(int *pCards, int nLen)
if(pCards == NULL || nLen &= 0)
sort(pCards, pCards + nLen); //调用标准库的排序算法
int zeroCount = 0; //大小王用0表示
int capCount = 0; //间隔数
//统计0的个数
for(i = 0; i & nL i++)
if(pCards[i] == 0)
zeroCount++;
//统计间隔数
int preCard = pCards[i];
for(i = i + 1; i & nL i++)
int curCard = pCards[i];
if(preCard == curCard) //与前一张牌比较
capCount += curCard - preCard - 1; //累加间隔数
preCard = curC
return (zeroCount &= capCount)? true: //只要王的个数大于间隔数
n个骰子的点数问题描述:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。&&&&&&&& 思路:这是一道应用动态规划思想的题目,而动态规划最难的就是要找最优子结构。并采取一种称为备忘录的方法避免重复计算。因为备忘录方法为每个解过的子问题建立了备忘录,以备需要时参看,避免了相同子问题的重复求解。&&&&&&& 本题的最优子结构为:F(k, n) 表示k个骰子点数和为n的种数,k表示骰子个数,n表示k个骰子的点数和
= F(k-1, n-6) + F(k-1, n-5) + F(k-1, n-4) + F(k-1, n-3) + F(k-1, n-2) + F(k-1, n-1)
对于 k & 0, k &= n &= 6*k
对于 n & k or n & 6*k
&&&&&&&& 当k=1时, F(1,1)=F(1,2)=F(1,3)=F(1,4)=F(1,5)=F(1,6)=1。&&&&&&&& 从上面公式可以看出,k个骰子点数和为n的种数只与k-1个骰子的和有关。这就可以用到备忘录的方法,用一张表格保存已解决的子问题的解,然后自底向上填表。考虑到当前层的计算只与下一层有关,因此只需保存一行。&&&&&&&& 参考代码:
const int FACE_NUM = 6; //骰子的面数
//函数功能 : n个骰子的点数
//函数参数 : number为骰子数
//返回值 : 无
void PrintSumProbabilityOfDices(int number)
if(number &= 0)
int *pSum = new int[number * FACE_NUM + 1]; //和的种类
double total = pow(6.0, number); //&cmath&
int size = number * FACE_NUM;
int i,j,k;
pSum[0] = 0;
for(i = 1; i &= FACE_NUM; i++)
pSum[i] = 1;
for(; i &= i++)
pSum[i] = 0;
for(i = 2; i &= i++) //骰子个数从2到n
for(j = i * FACE_NUM; j &= j--) //第i个骰子的和的范围为 [i, i*FACE_NUM]
pSum[j] = 0;
for(k = 1; k &= 6 && j &= k++) //其实展开就是 F(i, j) = F(i-1, j-6) + F(i-1, j-5) + F(i-1, j-4) + F(i-1, j-3) + F(i-1, j-2) + F(i-1, j-1)
pSum[j] += pSum[j-k];
//不可能的情况,即i个骰子的和不可能小于i
for(j = i - 1;j &= 0; j--)
pSum[j] = 0;
//打印结果
for(i = 0; i &= i++)
cout&&"sum = "&&i&&", p = "&&pSum[i] / total&&
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
这篇文章主要介绍了使用C语言实现最小生成树求解的简单方法,包括Prim算法和Kruskal算法的两种求解方式,需要的朋友可以参考下最小生成树Prim算法朴素版 有几点需要说明一下. 1.2个for循环都是从2开始的,因为一般我们默认开始就把第一个节点加入生成树,因此之后不需要再次寻找它. 2.lowcost[i]记录的是以节点i为终点的最小边权值.初始化时因 ...
这篇文章主要介绍了C语言递归操作用法,结合实例形式总结分析了C语言递归操作的原理.实现技巧与相关应用,需要的朋友可以参考下本文实例总结了C语言递归操作用法.分享给大家供大家参考,具体如下: 用归纳法来理解递归 步进表达式:问题蜕变成子问题的表达式结束条件:什么时候可以不再是用步进表达式直接求解表达式:在结束条件下能够直接计算返回值的表达式逻辑归纳项:适用于一 ...
这篇文章主要介绍了约瑟夫问题的Python和C++求解方法,通过其示例我们也可以看出如今写法最简洁的编程语言和最复杂的语言之间的对比:D 需要的朋友可以参考下么是约瑟夫问题?约瑟夫问题是一个有趣的数学游戏,游戏规则如下:1.N个人围成一个圈,编号从1开始,依次到N.2.编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出 ...
这篇文章主要介绍了js计算德州扑克牌面值的方法,实例分析了javascript计算扑克面值的算法技巧,需要的朋友可以参考下本文实例讲述了js计算德州扑克牌面值的方法.分享给大家供大家参考.具体如下:1. 代码如下: 代码如下:var Poker = function(n){
this.num = (n % 13) + 2;
this.ch = t ...
这篇文章主要介绍了C语言实现最长递增子序列问题的解决方法,采用递归的方法解决该问题,是非常经典的一类算法,需要的朋友可以参考下本文实例展示了C语言实现最长递增子序列问题的解决方法.分享给大家供大家参考.具体方法如下: 问题描述: 给定一个序列,找出其最长递增子序列长度. 比如 输入 1 3 7 5 输出 3 算法解决思路: 利用动态规划的思想,以序列的每个点 ...使用C语言求解扑克牌的顺子及n个骰子的点数问题
转载 & & 作者:wuzhekai1985
这篇文章主要介绍了使用C语言求解扑克牌的顺子及n个骰子的点数问题的方法,解答实例主要为了突出解题的算法,需要的朋友可以参考下
扑克牌的顺子
&&& 问题描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
&&&&&&&& 思路:可以将这5张牌排个序,然后统计出0的个数以及非0数字之间的间隔数,如果出现重复的非0数字,那么不是顺子。如果间隔数小于等于0的个数,那么是顺子。暂时未想到更好的办法。
&&&&&&&& 参考代码:
//函数功能 : 从扑克牌中随机抽5张牌,判断是不是一个顺子
//函数参数 : pCards为牌,nLen为牌的张数
//返回值 : 是否顺子
bool IsContinuous(int *pCards, int nLen)
if(pCards == NULL || nLen &= 0)
sort(pCards, pCards + nLen); //调用标准库的排序算法
int zeroCount = 0; //大小王用0表示
int capCount = 0; //间隔数
//统计0的个数
for(i = 0; i & nL i++)
if(pCards[i] == 0)
zeroCount++;
//统计间隔数
int preCard = pCards[i];
for(i = i + 1; i & nL i++)
int curCard = pCards[i];
if(preCard == curCard) //与前一张牌比较
capCount += curCard - preCard - 1; //累加间隔数
preCard = curC
return (zeroCount &= capCount)? true: //只要王的个数大于间隔数
n个骰子的点数
问题描述:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
&&&&&&&& 思路:这是一道应用动态规划思想的题目,而动态规划最难的就是要找最优子结构。并采取一种称为备忘录的方法避免重复计算。因为备忘录方法为每个解过的子问题建立了备忘录,以备需要时参看,避免了相同子问题的重复求解。
&&&&&&& 本题的最优子结构为:F(k, n) 表示k个骰子点数和为n的种数,k表示骰子个数,n表示k个骰子的点数和
= F(k-1, n-6) + F(k-1, n-5) + F(k-1, n-4) + F(k-1, n-3) + F(k-1, n-2) + F(k-1, n-1)
对于 k & 0, k &= n &= 6*k
对于 n & k or n & 6*k
&&&&&&&& 当k=1时, F(1,1)=F(1,2)=F(1,3)=F(1,4)=F(1,5)=F(1,6)=1。
&&&&&&&& 从上面公式可以看出,k个骰子点数和为n的种数只与k-1个骰子的和有关。这就可以用到备忘录的方法,用一张表格保存已解决的子问题的解,然后自底向上填表。考虑到当前层的计算只与下一层有关,因此只需保存一行。
&&&&&&&& 参考代码:
const int FACE_NUM = 6; //骰子的面数
//函数功能 : n个骰子的点数
//函数参数 : number为骰子数
//返回值 : 无
void PrintSumProbabilityOfDices(int number)
if(number &= 0)
int *pSum = new int[number * FACE_NUM + 1]; //和的种类
double total = pow(6.0, number); //&cmath&
int size = number * FACE_NUM;
int i,j,k;
pSum[0] = 0;
for(i = 1; i &= FACE_NUM; i++)
pSum[i] = 1;
for(; i &= i++)
pSum[i] = 0;
for(i = 2; i &= i++) //骰子个数从2到n
for(j = i * FACE_NUM; j &= j--) //第i个骰子的和的范围为 [i, i*FACE_NUM]
pSum[j] = 0;
for(k = 1; k &= 6 && j &= k++) //其实展开就是 F(i, j) = F(i-1, j-6) + F(i-1, j-5) + F(i-1, j-4) + F(i-1, j-3) + F(i-1, j-2) + F(i-1, j-1)
pSum[j] += pSum[j-k];
//不可能的情况,即i个骰子的和不可能小于i
for(j = i - 1;j &= 0; j--)
pSum[j] = 0;
//打印结果
for(i = 0; i &= i++)
cout&&"sum = "&&i&&", p = "&&pSum[i] / total&&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具扑克牌的顺子[算法]
查看原文:
&&&+题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
分析:大小王是特殊的数字,我们不妨把它们都当成0,这样和其他扑克牌代表的数字就不重复了。
如果判断是否顺子只需要三点,1:首先,对数组排序,计算0的个数。
2:判断是否含有重复元素,如有,则不是顺子
3:max+-+min+&=+4+(1+2+3+4+5),认真体会!
ps:自己的方法,不知道有错不……
#include"stdafx.h"
#include&stdio.h&
#include&stdlib.h&
#define+N+5
int+cmp(const+void+*a,+const+void+*b)
&&+return(*(int+*)a+-+*(int+*)b)+;
int+IsContinus(int+*a)
&&+qsort(a,5,sizeof(int),cmp);
&&+//判断0的个数
&&+int+index+=+0;
&&+int+zero+=+0;
&&+while(a[index]+==+0)
&&+&&&+zero++;
&&&&&&+index++;
&&+//从第一个不为零得数判断数组是否有重复的
&&+gap+=+a[4]+-+a[index];
&&+while(index+&+5)
&&&&&+if(a[index]+==+a[index+1])
&&+&&&+&printf("原因:有重复得数据");
&&+&&&+&&+return+-1;
&&+&&+index+++;
&&+if(gap+&=+4)
&&+return+1;
&&+else+return+-1;
void+main()
&&+int+a[5];
&&+while(true)
&&+for(i+=+0+;+i+&+N+;+i++)
&&+&&&+scanf("%d",&a[i]);
&&+S+=+IsContinus(a);
&&+for(i+=+0+;+i+&+5+;+i++)
&&&&&+printf("%d\n",a[i]);
&&&&+(S+==+-1)?printf("不是顺子\n"):printf("是顺子\n");
&&+system("pause");
温习:2012六一儿童节
关键说思想吧:
&不用排序,只需要求出输入的最大值,最小值(不包含王0值),看两者的差值是否满足(&=n-1,n为顺子数,普通的话
我的代码:
IsConsist(int arr[],int n)
int Max = 0, Min
for(int i = 0 ;
i& 15 ; i++)
for(int i = 0 ;
if(arr[i]!=0
&& 1 == map[arr[i]]
)//考虑了去重复,及王重复没事
map[arr[i]] =
if(arr[i]!=0)// 最小值不涉及到王
Max = arr[i]
& Max ? arr[i] : M
Min = arr[i]
& Min ? Min : arr[i];
//cout&&Max&&Min&&
if(Max - Min
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 扑克牌的顺子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信