1、关键点就在注释那
#ifndef SHH_H_
#define SHH_H_
#include"iostream"
using namespace std;
class Backtracking
{
public:
Backtracking(){ n = 4; C = new int[n]; count = 0; };
void Trial(int i);
void Print();
int Check(int i);
private:
int *C;
int n;
int count;
};
void Backtracking::Trial(int i)
{
if (i==n) //有四个打印结果
{
Print();
}
else
{
for (int j = 0; j < n; j++)
{
C[i] = j;
if (Check(i))
{
Trial(i + 1); //递归
}
}
}
}
int Backtracking::Check(int i)
{
for (int j = 0; j < i; j++)
{
if (C[i] == C[j] || i - C[i] == j - C[j] || i + C[i] == j + C[j]) //列, 左对角线,右对角线。
return 0;
}
return 1;
}
void Backtracking::Print()
{
cout << "解" << ++count << endl;
int i, j;
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (j==C[i])
{
cout << '*';
}
else
{
cout << '-';
}
}cout << endl;
}cout << endl;
}
#endif
2 主程序
#include "shh.h"
#include "iostream"
int main()
{
Backtracking T;
T.Trial(0);
return 0;
}