“斗牛”是一种热门的扑克游戏,每个人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];
}