Va roooggg qm nevoie urgenta
Problema trebuie rezolvata cu matrici ,nu cu vectori,și trebuie în C++ va rog e urgent
Răspunsuri la întrebare
Salut!
Ai rezolvarea in C++ mai jos
#include <iostream>
using namespace std;
const int N = 10;
int tabla[N][N];
int n;
bool pozitieValida(int linie, int col) //verific daca pot sa pun o regina pe aceasta linie/coloana
{
for (int i = 0; i < linie; i++)
{
if (tabla[i][col] == 1)
{
return false;
}
}
// diagonala din stanga
for (int i = linie - 1, j = col - 1; (i >= 0) && (j >= 0); i--, j--)
{
if (tabla[i][j] == 1)
{
return false;
}
}
//diagonala din dreapta
for (int i = linie - 1, j = col + 1; (i >= 0) && (j < n); i--, j++)
{
if (tabla[i][j] == 1)
{
return false;
}
}
return true;
}
void scrieSolutie()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << tabla[i][j];
}
cout << '\n';
}
int cn = n;
while (cn)
{
cout << "-";
cn--;
}
cout << '\n';
}
void regina(int lin)
{
if (lin == n)
{
scrieSolutie();
}
for (int col = 0; col < n; ++col)
{
if (pozitieValida(lin, col)) //daca pot sa pun regina atunci o pun
{
tabla[lin][col] = 1;
regina(lin + 1); //recursivitate
tabla[lin][col] = 0; //resetam tabla pt o alta solutie
}
}
}
int main()
{
cin >> n;
regina(0); //incepem din coltul stanga sus
return 0;
}