Формат выходных данных

Программа должна определить, кто выигрывает при данной раздаче, и вывести слово first или second, после чего вывести количество ходов, сделанных до выигрыша. Если на протяжении 106 ходов игра не заканчивается, программа должна вывести слово botva.

Пример

Входные данные Выходные данные
1 3 5 7 9 2 4 6 8 0 second 5

//I. Игра в пьяницу

#include "iostream"

using namespace std;

struct Player

{

int card;

Player *next;

};

Player* AddFirst(Player *f, Player *t)

{

t->next=f;

return t;

}

Player* AddLast(Player *last, Player* t)

{

last->next=t;

t->next=NULL;

return t;

}

int main()

{

Player *p;

Player *player1f=0, *player2f=0, *player1l=0, *player2l=0;

int n=5;

for(int i=0; i<n; ++i)

{

p=new Player;

cin>>p->card;

if(player1f==0) {AddFirst(player1f,p); player1f=p; player1l=p;}

else {AddLast(player1l,p); player1l=p;}

}

for(int i=0; i<n; ++i)

{

p=new Player;

cin>>p->card;

if(player2f==0) {AddFirst(player2f,p); player2f=p; player2l=p;}

else {AddLast(player2l,p); player2l=p;}

}

int s=0;

while(true)

{

Player *t1=player1f, *t2=player2f;

if(t1->card > t2->card)

{

if(t1->card==9 && t2->card==0)

{

if(player1f->next==0) {cout<<"second"; ++s; break;}

else if(player2f->next==0)

{

player1f=player1f->next;

AddFirst(player2f,t1); player2f=t1;

++s;

}

else{

player2f=player2f->next;

player1f=player1f->next;

AddLast(player2l,t1); player2l=t1;

AddLast(player2l,t2); player2l=t2;

++s;}

}

else{

if(player2f->next==0) {cout<<"first"; ++s; break;}

else if(player1f->next==0)

{

player2f=player2f->next;

AddLast(player1l,t2); player1l=t2;

++s;

}

else{

player2f=player2f->next;

player1f=player1f->next;

AddLast(player1l,t1); player1l=t1;

AddLast(player1l,t2); player1l=t2;

++s;

}

}

}

else if(t1->card < t2->card)

{

if(t1->card==0 && t2->card==9)

{

if(player2f->next==0) {cout<<"first"; ++s; break;}

else if(player1f->next==0)

{

player2f=player2f->next;

AddLast(player1l,t2); player1l=t2;

++s;

}

else{

player2f=player2f->next;

player1f=player1f->next;

AddLast(player1l,t1); player1l=t1;

AddLast(player1l,t2); player1l=t2;

++s;}

}

else{

if(player1f->next==0) {cout<<"second"; ++s; break;}

else if(player2f->next==0)

{

player1f=player1f->next;

AddFirst(player2f,t1); player2f=t1;

++s;

}

else{

player2f=player2f->next;

player1f=player1f->next;

AddLast(player2l,t1); player2l=t1;

AddLast(player2l,t2); player2l=t2;

++s;}

}

}

if(s>=1000000) {cout<<"botva"; system("PAUSE"); return 0;}

}

cout<<' '<<s;

system("PAUSE");

return 0;

}

3) Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа дожна определить, является ли данная скобочная последовательность правильной.

Пустая последовательность явлется правильной. Если A – правильная, то последовательности (A), [A], {A} – правильные. Если A и B – правильные последовательности, то последовательность AB – правильная.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: