void Queen( int i )
{ for ( int j = 0; j < n; j++ )
{
if ( 第 i 行第 j 列没有攻击 )
{ 在第 i 行第 j 列安放皇后;
if ( i == n-1 ) 输出一个布局;
else Queen ( i+1 );
撤消第 i 行第 j 列的皇后;
}
}
} 我想问的是,在输出第一个布局以后,不会撤销所有的皇后,只是撤销最后一行的皇后,然后继续for循环看后面的列有没有能安放皇后的,如果最后一列的所有可能都输出了,那么这个算法能实现对前面的行布局的修改吗,还是只能把前面n-1行的布局固定不动,只能找出最后一行所有的可能而不能找出所有布局的可能?
简言之我觉得这个算法不能找出所有的布局,只能保持前n-1行布局不动,只找出变动最后一列的皇后的位置的可能的布局。