Cerința
Se consideră o tablă de șah de dimensiune n
. Să se plaseze pe tablă n
regine astfel încât să nu existe două regine care să se atace.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran o singură configurație validă a tablei de șah. Ea va fi alcătuită din n
linii cu câte n
caractere -
sau *
, separate prin câte un spațiu. Caracterul -
reprezintă o poziție liberă de pe tablă, iar caracterul *
reprezintă o poziție de pe tablă ocupată de o regină.
Restricții și precizări
4 ≤ n ≤ 10
;- două regine se atacă dacă se află pe aceeași linie, aceeași coloană sau aceeași diagonală;
- orice configurație validă a tablei este acceptată.
Exemplu
Intrare
4
Ieșire
- - * - * - - - - - - * - * - -
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Regine1:
#include <iostream>
#include <cstdlib>
using namespace std;
int n , x[20];
bool gasit = false;
bool Valid(int k)
{
for(int i = 1 ; i < k ; i ++)
{
if(x[i] == x[k])
return false;
if(k - i == abs(x[k] - x[i]))
return false;
}
return true;
}
void Afisare(int n)
{
gasit = true;
for(int i = 1 ; i <= n ; i ++)
{
for(int j = 1 ; j <= n ; j ++)
if(x[j] == i)
cout << "* ";
else
cout << "- ";
cout << endl;
}
}
void Back(int k)
{
//std :: cout << k << " ";
for(int i = 1 ; !gasit && i <= n ; i ++)
{
x[k] = i;
if(Valid(k))
if(k == n)
Afisare(n);
else
Back(k + 1);
}
//std :: cout << '\n';
}
int main()
{
cin >> n;
Back(1);
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1281 Regine1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1281 Regine1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!