Pagini recente » Cod sursa (job #2451533) | Cod sursa (job #2125167) | Cod sursa (job #2912534) | Borderou de evaluare (job #1569600) | Cod sursa (job #1881985)
#include <stdio.h>
FILE *fin,*fout;
int n,t,a[10][10],sol[100][10],nr[100];
void verif(int m){
int i,j,c,k,st,x=0;
if(m>1){
for(i=1; i<=m; i++)
for(c=1; c<=m; c++)
if(c!=i){
st=0;
for(j=1; j<=nr[i]; j++)
for(k=1; k<=nr[c]; k++)
st+=a[sol[i][j]][sol[c][k]];
if(st==0)
x=1;
}
if(x==0)
t++;
}
}
void bkt(int p, int m){
int i;
if(p-1==n)
verif(m);
else{
for(i=1; i<=m; i++){
sol[i][++nr[i]]=p;
bkt(p+1,m);
--nr[i];
}
sol[m+1][++nr[m+1]]=p;
bkt(p+1,m+1);
--nr[m+1];
}
}
int main(){
fin=fopen("copii.in","r");
fout=fopen("copii.out","w");
int i,j;
fscanf(fin,"%d ",&n);
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
a[i][j]=fgetc(fin);
a[i][j]-='0';
}
fgetc(fin);
}
bkt(1,0);
fprintf(fout,"%d\n",t);
fclose(fin);
fclose(fout);
return 0;
}