输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER 请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//判断是否存在双王
bool judeDoubleJoker(vector<stringcardVec)
{
if (cardVec.size() != 2) return false;
bool result = true;
for (int i = 0;i < cardVec.size();++i)
{
if (cardVec[i] != "16"&&cardVec[i] != "17")
{
result = false;
break;
}
}
return result;
}
//判断是否有炸弹
//输出
void printVec(vector<stringcardVec)
{
for (int i = 0;i < cardVec.size();++i)
{
// cout << cardVec[i] << " ";
//对输入数据的处理
if (cardVec[i] == "11")
{
cout << "J";
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "12")
{
cout << "Q" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "13")
{
cout << "K" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "14")
{
cout << "A" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "15")
{
cout << "2" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "16")
{
cout << "joker" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else if (cardVec[i] == "17")
{
cout << "JOKER" ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
else {
cout << cardVec[i] ;
if (i != cardVec.size() - 1)
{
cout << " ";
}
}
}
}
//处理数据
void pushCardVec(string card,vector<string&vec)
{
//对输入数据的处理
if (card == "J")
{
vec.push_back("11");
}
else if (card == "Q")
{
vec.push_back("12");
}
else if (card == "K")
{
vec.push_back("13");
}
else if (card == "A")
{
vec.push_back("14");
}
else if (card == "2")
{
vec.push_back("15");
}
else if (card == "joker")
{
vec.push_back("16");
}
else if (card == "JOKER")
{
vec.push_back("17");
}
else {
vec.push_back(card);
}
}
//判断大小
void jude(vector<stringcardVec1, vector<stringcardVec2)
{
if (stoi(cardVec1[0]) stoi(cardVec2[0]))
{
printVec(cardVec1);
}
else if (stoi(cardVec1[0]) < stoi(cardVec2[0]))
{
printVec(cardVec2);
}
else
{
cout << "ERROR";
}
}
int main()
{
string card;
vector<stringcardVec1;
vector<stringcardVec2;
int flag = 0;
while (cin>>card)
{
if (card.find('-') >10 && flag==0)
{
//对输入数据的处理
pushCardVec( card, cardVec1);
}
else if (card.find('-') >10 && flag == 1)
{
pushCardVec(card, cardVec2);
}
else
{
string card1=card.substr(0,card.find('-'));
pushCardVec(card1, cardVec1);
string card2=card.substr(card.find('-')+1);
pushCardVec(card2, cardVec2);
flag = 1;
}
}
//cout << "cardVec1:";
//for (int i = 0;i < cardVec1.size();++i)
//{
// cout << cardVec1[i] << " ";
//}
//cout << "carVec1Size:" << cardVec1.size() << endl;
//cout << endl << "cardVec2:";
//for (int i = 0;i < cardVec2.size();++i)
//{
// cout << cardVec2[i] << " ";
//}
//cout << "carVec2Size:" << cardVec2.size() << endl;
//cout << endl<<"最大的数是:";
if (cardVec1.size() == cardVec2.size())
{
jude(cardVec1, cardVec2);
}
else {
if (judeDoubleJoker(cardVec1) == true )
{
printVec(cardVec1);
}
else if (judeDoubleJoker(cardVec2) == true || cardVec2.size() == 4)
{
printVec(cardVec2);
}
else if (cardVec1.size() == 4)
{
printVec(cardVec1);
}else if (cardVec2.size() == 4)
{
printVec(cardVec2);
}
else
{
cout << "ERROR";
}
}
return 0;
};
输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER 请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR的更多相关文章
- ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
前面我们主要着重于codec.platform.machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如 ...
- Socket编程——怎么实现一个服务器多个客户端之间的连接
package coreBookSocket; import java.io.IOException; import java.net.ServerSocket; import java.net. ...
- 浅谈Oracle表之间各种连接
Oracle表之间的连接分为三种: 1.内连接(自然连接) 2.外连接 2.1.左外连接(左边的表不加限制,查询出全部满足条件的结果) 2.2.右外连接(右边的表不加限制,查询出全部满足条件的结果) ...
- 客户端一个http连接包含两个方向,一个是这个http连接的输入,另一个是这个http连接的输出。
1.客户端一个http连接包含两个方向,一个是这个http连接的输入,另一个是这个http连接的输出. 利用httpclient进行ip地址和端口号连接后,http的输出端作为http请求参数设置.h ...
- 【Xamarin挖墙脚系列:配置Mac之间的连接问题】
原文:[Xamarin挖墙脚系列:配置Mac之间的连接问题] 首先建议把MAC的防火墙关掉,呵呵, 其次,去设置里,允许所有用户远程登录连接MAC
- erlang与c之间的连接
http://blog.chinaunix.net/uid-22566367-id-382012.html erlang与c之间的连接参考资料:网络资料作者:Sunny 在Programming ...
- capsule network——CNN仅仅考虑了“有没有”的问题,没有考虑feature map的结构关系。这个结构关系包括位置,角度等。Capsule layer的输出也跟feature map的max-pooling输出不同,capsule layer的输出是一个向量,这个向量包含了位置,大小,角度等信息,这是feature map仅能输出一个值所不具备的;训练比较慢
capsule network--<Dynamic Routing Between Capsules> from:https://zhuanlan.zhihu.com/p/31491520 ...
- 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志
log4j向多个文件记录日志 关键配置,指定想要的日志级别信息输出到指定的日志文件中: log4j.appender.errorLogger.Threshold=ERROR #扩展,可指定只在子类自己 ...
- printf格式输出数字,位数不够前面补0,适用与输出编号
printf格式输出数字,位数不够前面补0,适用与输出编号 printf格式输出:%[flags][width][.perc][F|N|h|l]type 用到了flags中的 0 (注意是零不是欧) ...
随机推荐
- 【CF1015E】Stars Drawing(贪心)
题意:给定一个n×m大小的字符矩阵,仅由‘.’和‘*’组成,询问这个图可否划分为一些由‘*’组成的十字形状,这些十字之间可以有重叠, 如果存在方案则输出每个十字中心坐标与边长度,无解输出-1 n,m& ...
- EasyUI-Accordion
EasyUI-Accordion Accordion英文翻译就是 手风琴活 或者 可折叠的 参考效果图: 从图中我们其实也可以将这种组件理解为手风琴式的组件. 该组件方便对数据进行分类管理,在有限空间 ...
- linux 常用命令: basename 去掉路径和扩展名
basename: 去掉路径和扩展名 /bin/basename coreutils-8.4-9.el6.x86_64 basename命令用于去掉路径信息,返回纯粹的文件名,如果指定的文件的扩展 ...
- Cryptography I 学习笔记 --- 基于陷门置换的公钥加密
RSA算法的工作流程 1. 生成公钥私钥 生成两个素数p和q,计算n=p*q,计算φ(n)=n-p-q+1,然后生成e与d,使 e * d = 1 mod φ(n). 然后以(n, e)作为公钥,(n ...
- 双端队列-deque【集vector与list于一身的牺牲内存换功能完善】
看到双端队列(deque)了,书上是这样说的:除了栈和队列外还有一种限定性数据结构是双端队列:双端队列是限定插入和删除操作在表的两端进行的线性表:尽管双端队列看起来似乎比栈和队列更灵活,但实际上在应用 ...
- 常用的Linux系统命令
一.linux简介 ...
- iOS9.0 友盟分享详细过程
一: 申请友盟的AppKey(友盟的Key是根据应用的名称生成的!) 在友盟注册了你自己的开发者账号后就可以申请AppKey了.然后在这个方法里面设置Key - (BOOL)application:( ...
- 洛谷——P1621 集合
P1621 集合 题目描述 现在给你一些连续的整数,它们是从A到B的整数.一开始每个整数都属于各自的集合,然后你需要进行一下的操作: 每次选择两个属于不同集合的整数,如果这两个整数拥有大于等于P的公共 ...
- 转:java中的事件监听是怎样实现随时监听的
http://blog.csdn.net/qq369201191/article/details/51204006
- 从客户端(ExportContent="...ontinuous <br />Pass Count":13...")中检测到有潜在危险的 Request.Form 值。
mvc中,用chrome浏览器导出excel提示如题错误的解决办法. <system.web> <httpRuntime requestValidationMode="2. ...