Clock Patience小游戏,百度可查到,可以下载玩
#include <iostream>
#include <queue>
using namespace std;
struct Clock {//第一个字符大写比较好
char charrank;
char charsuit;
bool boolface;
int binarytoint() {
switch(charrank) {
case 'A': return 1;
case 'T': return 10;
case 'J': return 11;
case 'Q': return 12;
case 'K': return 13;
default : return int(charrank - '0');
}
}
};
class ClockPat {
private:
queue<Clock> qclock[13];
int walkstep;
Clock steplast;
public:
void initial();
void readClock(char first);
void computing();
void outResult();
};
void ClockPat::initial() {
for(int i = 0;i < 13;i++) {
while(!qclock[i].empty()) {
qclock[i].pop();
}
}
}
void ClockPat::readClock(char first) {
Clock Clo;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 13; j++) {
if((i == 0) && (j == 0)) {
Clo.charrank = first;
cin >> Clo.charsuit;
Clo.boolface = true;
}
else {
cin >> Clo.charrank >> Clo.charsuit;
Clo.boolface = true;
}
qclock[12 -j].push(Clo);
}
}
}
void ClockPat::computing() {
int ff = 12;
walkstep = 0;
while(qclock[ff].front().boolface) {
steplast = qclock[ff].front();
qclock[ff].pop();
ff = steplast.binarytoint() - 1;
steplast.boolface = false;
walkstep++;
qclock[ff].push(steplast);
}
}
void ClockPat::outResult() {
cout<<walkstep/10<<walkstep%10<<',';
cout<<steplast.charrank<<steplast.charsuit<<endl;
}
int main()
{
ClockPat cl;
char cc;
while((cin>>cc) && (cc != '#')) {
cl.initial();
cl.readClock(cc);
cl.computing();
cl.outResult();
}
return 0;
}