| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4816 人关注过本帖
标题:判断 5 张牌是不是顺子,这里有两种方法,哪种更优一些?
取消只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
判断 5 张牌是不是顺子,这里有两种方法,哪种更优一些?
问题:用户输入5张牌,程序判断这5张牌是不是顺子。
牌点数由小到大排列:2.3.4.5.6.7.8.9.10.J.Q.K.A。
比如56789是顺子。
A是最大的牌,不能和最小的2连起来组成顺子,比如a.2.3.4.5不是顺子。

这个问题我google了一下,发现大部分答案都是先排序再判断。
现在已知另一种方法:
建立一个数组rank[13],并根据5张牌的点数花色为其赋值,使rank[i]为j代表点数为i的牌有j张,例如rank[3] = 2代表点数为3的牌有2张。
示例代码:
    int rank[13] = {0};
    for (i = 0; i < 5; i ++){
        rank[hand[i][0]] ++;    //hand[5][2]存储的是5张牌的点数和花色
然后根据rank[13]来判断是否顺子。
示例代码:
    int i;
    int num_consec = 0;
    bool straight = false;
    for (i = 0; rank[i] == 0; i ++);
        while (i < 13 && rank[i] > 0){
            num_consec ++;
            i ++;
        }
    if (num_consec == 5){
        straight = true;
        return;
    }

请问这种方法相比排序后判断的方法哪一种方法更优一些呢?或者在牌的数量增加时,这种方法有什么明显的弊端吗?
PS:我目前使用这种方法是因为C语言里的qsort()函数里面的参数似乎涉及到指针,我还看不太懂。
搜索更多相关主题的帖子: google 最大的 用户 
2014-09-05 18:40
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
回复 2 楼 erty1001
说的好,我太赞同了
2014-09-05 19:21
快速回复:判断 5 张牌是不是顺子,这里有两种方法,哪种更优一些?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089734 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved