c++,栈的应用之n皇后问题

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行布局不动,只找出变动最后一列的皇后的位置的可能的布局。

http://wenku.baidu.com/link?url=iAwHQq9fHmcKf4mCRYCqO9oEt_5QD4y15UHS_WsZPt-Y3M3xiYsj73L0NNcdNfzVOKJS2J18tLIOubkwxCp7S8AyFkTA0ZaMkgIZLDHyzvm

http://download.csdn.net/download/sharemyfree/2925146