#include<iostream>
using namespace std;
int legal(int i,int j,int a[][4])
{
int cn = 0;
for(int row = 0;row<=i;row++)
{
if(a[row][j]!=0)cn++;
}
if(cn>=2)
{
return 0;
}
return 1;
}
int Trial(int i,int n,int a[][4])
{
if(i>=n)
{
for(int row = 0;row<n;row++)
{
for(int col = 0;col<n;col++)
if(a[row][col]!=0)cout<<col;
}
cout<<endl;
return 1;
}
else
for(int j = 0;j<n;j++)
{
a[i][j] = 1;
if(legal(i,j,a)){
Trial(i+1,n,a);
}
a[i][j] = 0;//回溯重要的标志
}
}
int main(void)
{
int a[4][4]={0};
for(int row = 0;row<4;row++)
{
for(int col = 0;col<4;col++)
cout<<a[row][col];
cout<<endl;
}
Trial(0,4,a);
return 0;
}
回溯法-n皇后
最新推荐文章于 2024-01-20 20:51:42 发布