#include #include void imprime_tabuleiro(int n, int * r){ for(int y = 0; y < n; y++){ for(int x = 0; x < n; x++){ if(r[y] == x) printf("R "); else printf("_ "); } printf("\n"); } return; } void solve(int n, int * r, int atual){ if(atual == n){ //considera que chega aqui se for viavel apenas imprime_tabuleiro(n, r); printf("\n"); return; } for(int x = 0; x < n; x++){ //revificar se podemos colocar a rainha atual na casa x int viavel = 1; for(int yy = 0; yy < atual; yy++){ //verificando a coluna das rainhas anteriores if(r[yy] == x) viavel = 0; //verificando a diagonal das rainhas anteriores if(r[yy] == x + (atual - yy) || r[yy] == x - (atual - yy)) viavel = 0; } if(viavel == 1){ r[atual] = x; solve(n, r, atual+1); } } return; } int main(){ int n = 4; int r[n]; solve(n, r, 0); return 0; }