۰۹-۱۹-۱۳۸۹, ۰۴:۲۴ بعد از ظهر
|
#24 (لینک دائم)
|
Administrator
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood:
|
برنامه ی زیر که به صورت بازگشتی و با روش BackTrack نوشته شده رو میشه به N وزیر به راحتی تعمیم داد:
كد:
#include <iostream>
#include <stdlib.h>
#include<conio.h>
using namespace std;
#define N 8
bool mark[N];
int a[N];
void bt (int n)
{
if (n == N)
{
for (int i = 0; i < N; i++, cout << endl)
for (int j = 0; j < N; j++)
if (a[i] == j)
cout << "1 ";
else
cout << "0 ";
cout << endl;
getch ();
}
else
{
for (int i = 0; i < N; i++)
if (!mark[i])
{
bool b = true;
for (int j = 0; j < n; j++)
if (n - j == abs(i - a[j]))
b = false;
if (b)
{
mark[i] = true;
a[n] = i;
bt(n + 1);
mark[i] = false;
}
}
}
}
int main ()
{
bt(0);
}
|
|
|