我是菜鸟,只会学习DFS算法,就是DFS算法我也学了好长时间。
#include<iostream>
#include <iomanip>
#define n 8
using namespace std;
int a[n+1],total=0,l;
int cheak(int i){
int k;
for(k=1;k<i;k++)
if(abs(a[i]-a[k])==abs(i-k)||a[i]==a[k]) return 0;
return 1;
}
void dfs(int i){
int j;
if(i==n+1)
{cout<<"第"<<setw(2)<<total+1<<"种:";for(j=1;j<=n;j++) cout<<a[j]<<" ";l++;if(l%3==0){cout<<endl;l=0;}total++;return ;}
for(j=1;j<=n;j++)
{
a[i]=j;
if(cheak(i))
dfs(i+1);
}
}
int main()
{
dfs(1);
cout<<total;
system("pause");
return 0;
}
该程序运行效果是: