zoukankan      html  css  js  c++  java
  • 算法:扑克牌的顺子

    扑克牌的顺子
    从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。

    2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意数字。

    没找到很好的解法,贴上我的解法,看有没有更好的解法。

    我用一个数组存储输入的数字,用99代表大小王,然后对其排序,当期不为99时求出其前一个与后一个的差值-1之和,即中间差了多少张牌,与王的数量对比。

    #include <iostream>
    #include <stack>
    using namespace std;
    void sortarray(int a[],int length)//冒泡排序对数组进行排序
    {
    for(int i=0;i<length;i++)
    {

    {
    for(int j=i;j<length;j++)
    {
    if(a[i]>a[j])

    {
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;

    }
    }
    }
    }
    for(int i=0;i<length;i++)
    {
    cout<<a[i];
    }
    }
    bool isContinue()//判断是否连续
    {
    int *a = new int[5];
    int num,count=0,num99=0;//count为差多少张牌,num99为王的数量。
    for(int i=0;i<5;i++)
    {
    cin>>num;
    a[i]=num;
    }
    sortarray(a,5);
    for(int i=1;i<5;i++)
    {
    if(a[i]==99)
    num99++;
    else
    {
    count=count+a[i]-a[i-1]-1;
    }
    }
    if(count<=num99)//如果差牌的数量小于等于王的数量  连续,否则不连续
    return true;
    else return false;
    }
    int main( int argc, char ** argv )
    {
    bool ret=isContinue();
    cout<<ret;
    return 0;
    }

  • 相关阅读:
    SQL 笔记汇总
    SQL 备份数据 脚本 -添加到作业 步骤里面 可删除历史天文件
    SQL 事物
    MS-SQL2005 执行DOS命令
    笔记 hosts文件修改 网站发布二级目录 vs2008,vs2010 css验证
    自定义日期控件
    jQuery CSS3 照片墙
    CSS3 照片墙
    jquery.cookie.js
    CSS jQuery 图片全屏切换
  • 原文地址:https://www.cnblogs.com/gardener/p/5980165.html
Copyright © 2011-2022 走看看