Cod sursa(job #606668)

Utilizator CS-meStanca Marian Ciprian CS-me Data 7 august 2011 17:02:36
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.21.2507;}\viewkind4\uc1\pard\f0\fs20 #include <stdio.h>\par
#include <string.h>\par
#define Nmax 13\par
FILE *fin, *fout;\par
\par
int a[Nmax][Nmax],leg[Nmax][Nmax];\par
int mul[Nmax];\par
int n,sol,nrm;\par
\par
char s[Nmax];\par
\par
void check()\{\par
\tab int i, j, ok=0;\par
\tab if(nrm <=1 ) return;\par
\tab memset(leg,0,sizeof(leg));\par
\tab for(i=1;i<=n;++i)\par
\tab\tab for(j=1;j<=n;++j)\par
\tab\tab\tab if(a[i][j]) \par
\tab\tab\tab\tab leg[mul[i]][mul[j]]=1;\par
\tab for(i=1;i<=nrm;++i)\par
\tab\tab for(j=1;j<=nrm;++j)\par
\tab\tab\tab if(j!=i)\par
\tab\tab\tab\tab if(!leg[i][j]) return;\par
\tab\tab\tab\par
\tab sol++;\par
\}\par
\par
void back(int k)\{\par
\tab int j;\par
\tab if(k>n) check();\par
\tab else\{\par
\tab for(j=1; j<=nrm; ++j)\{\par
\tab\tab mul[k]=j;\par
\tab\tab back(k+1);\par
\tab\}\par
\tab mul[k]=++nrm;\par
\tab back(k+1);\par
\tab --nrm;\par
\tab\}\par
\}\par
\par
int main()\{\par
\tab int i,j;\par
\tab fin=fopen("copii.in","r");\par
\tab fout=fopen("copii.out","w");\par
\tab fscanf(fin,"%d\\n",&n);\par
\tab for(i=1;i<=n;++i)\{\par
\tab\tab fgets(s,Nmax,fin);\par
\tab\tab for(j=0;j<n;++j) a[i][j+1]=s[j]-'0';\par
\tab\}\par
\tab\par
\tab back(1);\par
\tab\tab\par
\tab printf("%d\\n",sol);\par
\tab fclose(fin); fclose(fout);\par
\tab return 0;\par
\}\par
}