一沓扑克牌中剔除等于13或者相邻之和等于13的扑克牌,如果最后一个和第一个之和为13,同样剔除
最后剩余的扑克牌数目
Tommy is learning a simple card game called Circle. To play the game, the single player shuffles a deck of cards. He or she then flips through the deck, removing all instances of the 'K' card, and all consecutive pairs of cards that add up to 13. The deck does wrap around, so that if the last card remaining in the deck and the first card remaining in the deck add up to 13, they are both removed. The player keeps cycling through the deck until no more cards can be removed.
Create a class CircleGame containing the method cardsLeft that takes a string deck representing a not-necessarily complete nor correct deck of cards. Each character of deck represents the value of a card without the suit. The values shown on the card represent the following numerical values:
'A' - 1
'2' - 2
'3' - 3
'4' - 4
'5' - 5
'6' - 6
'7' - 7
'8' - 8
'9' - 9
'T' - 10
'J' - 11
'Q' - 12
'K' - 13
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
#define N 10
class bp
{
public:
bool operator()(int a,int b)
{
return (a+b==13);
}
};
class CircleGame
{
private:
vector<int> change(string deck)
{
int len =deck.size();
int val;
vector<int> v(len);
for(int i=0 ; i < len ;i++)
{
if(deck[i]=='A')
val=1;
else if(deck[i]=='T')
val=10;
else if(deck[i]=='J')
val=11;
else if(deck[i]=='Q')
val=12;
else if(deck[i]=='K')
val=13;
else
val=deck[i]-'0';
v[i]=val;
}
return v;
}
int gnext(int i, vector<bool> status)
{
int len =status.size();
int k = (i+1)%len;
while(!status[k])
{
k=(k+1)%len;
if(k==i)
{
k=-1;
break;
}
}
return k;
}
public:
int cardsLeft(string deck)
{
vector<int> deckVal =change(deck);
int len=deckVal.size();
//copy(deck.begin(),deck.end(),ostream_iterator<char>(cout," "));
//cout<<" "<<deck.size()<<endl;
//copy(deckVal.begin(),deckVal.end(),ostream_iterator<int>(cout," "));
//cout<<" "<<deckVal.size()<<endl;
vector<bool> status(len,true);
bool cur=false;
int i=0;
while(1)
{
i=gnext(i,status);
if(i==-1)
return len;
if(deckVal[i]==13)
{
len--;
status[i]=false;
cur=true;
}
else
{
int k = gnext(i,status);
if(k==-1)
return len;
else if(k < i)
{
if((deckVal[i]+deckVal[k])==13)
{
len=len-2;
cur=true;
status[i]=false;
status[k]=false;
}else
{
if(cur)
cur=false;
else
return len;
}
}else
{
if((deckVal[i]+deckVal[k])==13)
{
len=len-2;
cur=true;
status[i]=false;
status[k]=false;
}
}
}//else
}
}
};
分享到:
相关推荐
Java工程师修炼之道 - 梳理Java知识体系,沓实架构基础
行业文档-设计装置-一种卫生纸折叠机分沓机构.zip
五年级下册数学同步讲练测-第八单元第2课 找次品-2-人教新课标(附答案).docx
押题04飒沓青春生浩气-备战2021年高考作文之热点押题预测.pdf
行业分类-设备装置-一种生活用纸折叠机的自动分沓夹纸翻转机.zip
huffman课程设计作业课件,老师给的作业,虐死一沓人的那一种,那位仁兄编程大神请进
Symbian手机软件制作的全部源码,经典的一沓糊涂,哈哈,不会让你失望的饿
《 Java工程师修炼之道》已开源章节后续计划此书一开始是计划并且要章专门介绍大数据开发技术,然后现在越来越多的公司在建造自己的大数据平台,大数据技术也逐渐成为Java工程师的必备技能。但自己此方面经验丰富,...
喝完第三杯咖啡,您捡起一沓技术规格书,发出一声叹息。今天您面临着一个熟悉的挑战:开发一个满足前沿要求的下一代平台,时间难以置信地紧迫,预算不合道理地低,而且还要面带微笑地去做。您必须为项目选择合适的...
zypper install openssh #安装,或者使用yast2 -i openssh 命令 chkconfig sshd on #设置开机启动 ############################################### 扩展阅读: 修改主机名字 vi /etc/HOSTNAME #编辑文件 hostname ...
内容简介 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、数据库编程、分布式...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
内容简介 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、数据库编程、分布式...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
随着后PC 时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。目前已广 泛应用于信息家电、数据网络、工业控制、医疗卫生、航空航天等众多领域。巨大的市场 潜力,无穷的商机,吸引了各路英豪纷踵沓来。 硬件...
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。
简介 · · · · · · 本书是Java 2技术权威指南,全面覆盖Java 2技术的高级主题,包括:多线程、集合框架、网络API、...他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康沓狄格大学的教授。