Pagini recente » Cod sursa (job #612970) | Cod sursa (job #473539) | Cod sursa (job #832042) | Cod sursa (job #1398528) | Cod sursa (job #873271)
Cod sursa(job #873271)
#include <iostream>
#include <string.h>
using namespace std;
int n;
bool exista=false;
char sir[10005];
char v[10005];
void f(int poz)
{
if(v[poz]!='1' && v[poz]!='2' && v[poz]!='3' && v[poz]!='A' && v[poz]!='B' && v[poz]!='C')
return;
cout<<"f("<<poz<<") sir["<<poz<<"]="<<sir[poz]<<'\n';
int contor=0;
for(contor=0;contor<=poz;contor++)
cout<<sir[contor]<<' ';
cout<<endl;
//cazuri particulare de iesire
if(poz>n)
return;
if(poz==n && sir[poz]==v[poz])
exista=true;
if(exista)
return;
if(sir[poz]=='1' || sir[poz]=='2' || sir[poz]=='3' )
if(sir[poz]==v[poz])
f(poz+1);
else
return;
//sa repar copierile si indicii
if(sir[poz]=='A')
{
sir[poz]='1';
f(poz+1);
sir[poz]='2';
f(poz+1);
sir[poz]='3';
f(poz+1);
//sir[poz]='A'; ??
}
else if(sir[poz]=='B')
{
strcpy(sir+poz+2,sir+poz+1); //2=1
sir[poz]='2';
sir[poz+1]='B';
f(poz+1);
strcpy(sir+poz+5,sir+poz+1);
sir[poz]='1';
sir[poz+1]='A';
sir[poz+2]='3';
sir[poz+3]='A';
sir[poz+4]='C';
}
else if(sir[poz]=='C')
{
sir[poz+1]='2';
f(poz+1);
strcpy(sir+poz+2,sir+poz+1);
sir[poz]='3';
sir[poz+1]='B';
sir[poz+2]='C';
f(poz+1);
sir[poz]='1';
sir[poz+1]='2';
sir[poz+2]='A';
f(poz+1);
}
/*
if(perla=='A')
{
f(poz+1,'1');
f(poz+1,'2');
f(poz+1,'3');
}
else if(perla=='B')
{
f(poz+1,'2');
f(poz+2,'B');
f(poz+1,'1');
f(poz+2,'A');
f(poz+3,'3');
f(poz+4,'A');
f(poz+5,'C');
}*/
}
int main()
{
cin>>n;
int i;
for(i=0;i<n;i++)
{
cin>>v[i];
}
sir[0]='A';
if(!exista)
f(0);
sir[0]='B';
if(!exista)
f(0);
sir[0]='C';
if(!exista)
f(0);
cout<<exista<<endl;
system("PAUSE");
return 0;
}