Segmentation fault

di il
4 risposte

Segmentation fault

Ciao a tutti, ho scritto questo codice dove calcola il numero massimo di combinazioni delle 8 regine, solo che mi da errore di segmentazione, dove ho sbagliato.
DDD mi da un errore sulla funzione verifica, ma non riesco a capire.
#include <stdio.h>

int board[8][8] = {{0}};
int verifica(int,int);
int clear(int);
int queen(int, int, int);

int main() {

	printf("%d\n", queen(0, 0, 0));

	return 0;
}

int queen( int riga, int col, int WINS) {

	if (riga == 0 && col > 7)
	 return WINS;
	else {
		for (int i = col; i < 8; i += 1) {
			if(verifica( riga, i)){
				board[riga][i] = 1;
				if(riga == 7) {
					++WINS;
					break;
				}
				queen(++riga, 0, WINS);
			}
		}
		--riga;
		queen (riga, clear(riga), WINS);
	}
}

int verifica( int X, int Y) {

	for (int i = 0; i <= X; i += 1) {
		if (board[X - i][Y])
			 return 0;
		if(Y - i >= 0 && board[X - i][Y - i])
			 return 0;
		if(Y + i <= 7 && board[X - i][Y + i])
			 return 0;
	}
	return 1;
}

int clear( int row) {

	for (int i = 0; i < 8; i += 1) {
		if (board[row][i]) {
			board[row][i] = 0;
			return i + 1;
		}
	}
	return 0;
}

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte