Pagini recente » Cod sursa (job #139713) | Cod sursa (job #1765022) | Cod sursa (job #2956026) | Cod sursa (job #1775190) | Cod sursa (job #18703)
Cod sursa(job #18703)
#include<stdio.h>
#include<mem.h>
int n,ct;
int v[600];
int s[600];
int val[300],val1[300];
FILE *f,*g;
void print()
{
int ok=1,ies=1,j,ok2=1;
val[1]=1;
val[2]=1;
for(int i=1;i<=n&&ies==1;i++)
{ for(j=1;j<=2*n-1;j++)
if(s[j]==i)
ok=0;
if(ok==1)
{
ies=0;
ok2=0;
}
}
if(ok2==1)
{
memset(val1,0,300);
for(i=1;i<=2*n-1;i++)
{
if(val1[s[i]]==0)
val1[s[i]]=v[s[i]];
else
if(val1[s[i]]!=v[s[i]])
ok=0;
}
memset(val1,0,300);
}
if(s[1]==s[2*n-1]&&ok==1)
{
ct++;
for(i=1;i<=2*n-1;i++)
printf("%d ",s[i]);
printf("\n");
}
memset(val,0,300);
}
int valid(int p)
{
if (s[p]==s[p-1]) return 0;
return 1;
}
void back(int p)
{
for(int i=1;i<=n;i++)
{
s[p]=i;
if(valid(p)==1)
{
val[s[p]]=1;
if(p==2*n-1)
print();
else
back(p+1);
}
}
}
int main()
{
f=fopen("culori.in","r");
g=fopen("culori.out","w");
int i;
printf("alooooo\n");
fscanf(f,"%d",&n);
for (i=1;i<=2*n-1;i++)
fscanf(f,"%d",&v[i]);
if(v[1]!=v[2*n-1])
fprintf(g,"0\n");
else
{
s[1]=1;
s[2]=2;
back(3);
fprintf(g,"%d\n",ct);
}
fcloseall();
return 0;
}