遇到的算法题--02(斗牛)

“斗牛”是一种热门的扑克游戏,每个人5张牌,其中A当1,JQK都当10。要求:从5张牌中选出3张牌(必须刚好3张),如果存在3张牌加起来是10或者20或者30,就称为“有牛”,否则就是“没牛”。有牛的情况下,剩余两张牌加起来除以10后:
• 余数为0就是“牛牛”,是最大的一手牌。
• 如果余数为9就是“牛九”,是第二大的,依次类推,“牛一”就是最小。
• “有牛”都大于“没牛”。
• 两人都是没牛的情况下,比最大的一张牌谁大(注意A最大,2最小),最大一张牌一样则比较第二张牌,依次类推。
请写一段代码,验证两手牌哪一个最大。
输入是长度为5的两个字符串,表示两手牌。字符串内容是23456789TJQKA,注意为了让字符串长度一致,我们用T代表10。
请输出一个值:1表示第一手牌大,-1表示后一手牌更大,0表示一样大。

思路简述:解决该问题主要解决好两个问题,一个是是否有牛,第二个是剩余两个数在有牛情况下的余数,然后根据需要判断各种情况即可。此外,因为在没有牛的情况下,采用比较余数大小的方式

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int partition(vector<int>& arr,int start, int send){
    int s = start;
    int e = send;
    int temp = arr[send];
    while(s < e){
        while(s < e && arr[s] <= temp){
            s++;
        }
        if(s < e){
            arr[e] = arr[s];
        }

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值