Hola amigos estoy buscado el error al siguiente código que estoy haciendo, me funciona aveces pero en ocasiones se me cae y no le puedo encontrar el error, el programa recibe un txt cuyo contenido es:
4
10 30 4 10
80 90 110 1
0 40 50 60
70 85 200 35
#include<math.h>
#include<stdio.h>
#define TRUE 1
#define FALSE 0
void print_solution(int n,int x[])
{
char c[n][n];
int i,j;
for(i=1;i<=n;i++)
{
for(j=1; j<=n; j++)
{
c[j]='-';
}
}
for(i=1;i<=n;i++)
{
c[x]='Q';
}
for( i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%c",c[j]);
}
printf("\n");
}
}
int place(int x[],int k)
{
int i;
for(i=1;i<k;i++)
{
if(x==x[k]||i-x==k-x[k]||i+x==k+x[k])
{
return FALSE;
}
}
return TRUE;
}
int main()
{
FILE *entrada;
entrada = fopen("Entrada.txt","r");
if (entrada == NULL){
printf("\nError de apertura del archivo. \n\n");
}else{
if(!feof(entrada))
{
int n,i,j;
fscanf(entrada,"%d",&n);fflush(stdin);
printf("%d",n);
for(i = 1; i <= n; i++)
{
printf("\n");
for(j = 1; j<=n; j++)
{
fscanf(entrada,"%d",&g[j]);fflush(stdin);
printf("%d ",g[j]);
}
}
int g[n][n];
for(i = 1; i <= n; i++)
{
for(j = 1; j<=n; j++)
{
fscanf(entrada,"%d",&g[j]);fflush(stdin);
printf("%d ",g[j]);
}
}
int x[n];
int count=0;
int k=1;
int suma = 0;
x[k]=0;
i = 1;
while(k!=0)
{
if(k == 1){suma = 0;}
x[k]=x[k]+1;
while((x[k]<=n)&&(!place(x,k)))
{
x[k]=x[k]+1;
}
if(x[k]<=n)
{
suma = suma + g[x[k]];
if(k==n)
{
printf("\n\n\n\t%d",suma);
count++;
printf("\n\nSolution %d is : \n\n",count);
print_solution(n,x);
}
else
{
k++;
i++;
x[k]=0;
}
}
else
{
k--;
i--;
if(x[k]<=n)
{
suma = suma - g[x[k]];
}
}
}
}
}
fclose(entrada);
return 0;
}