使用stack来模拟结果就WA了一个checkpoint
#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
stack<char> cardA,cardB,cardC;
char card[110],s;
void mvA(void)
{
s=cardA.top();
cardA.pop();
return;
}
void mvB(void)
{
s=cardB.top();
cardB.pop();
return;
}
void mvC(void)
{
s=cardC.top();
cardC.pop();
return;
}
int main()
{
int l;
scanf("%s",card);
l=strlen(card);
for(int i=0;i<=l-1;i+=1) cardA.push(card[i]);
scanf("%s",card);
l=strlen(card);
for(int i=0;i<=l-1;i+=1) cardB.push(card[i]);
scanf("%s",card);
l=strlen(card);
for(int i=0;i<=l-1;i+=1) cardC.push(card[i]);
mvA();
while(1)
{
if(cardA.empty())
{
cout<<"A"<<endl;
return 0;
}
else if(cardB.empty())
{
cout<<"B"<<endl;
return 0;
}
else if(cardC.empty())
{
cout<<"C"<<endl;
return 0;
}
if(s=='a') mvA();
else if(s=='b') mvB();
else if(s=='c') mvC();
}
}