⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 n.txt

📁 这是n皇后回溯法
💻 TXT
字号:
#include <iostream>
#include <iterator>
#include <windows.h>

using    namespace  std;

bool     IsOk( int *a, int n ){
    int  i;
    for( i=0; i<n; ++i )
        if( a[i]-a[n]==n-i || a[i]-a[n]==i-n )
            return false;
    return true;
}

void     f( int n ){
    int  *a=new int[n+1], *l=new int[n+1], *u=new int[n+1];
    int  k, p, q;
    for( k=0; k<n; ++k ) l[k]=k+1;
    l[n]=0;
    k=1;
X2: p=0; q=l[0];
X3: a[k]=q;
    if( !IsOk( a, k ) )
        goto X5;
    else
        if( k==n ){
            copy( a+1, a+n+1, ostream_iterator<int>(cout," ") ),cout<<endl;
            goto X6;
        }
    u[k]=p; l[p]=l[q]; ++k; goto X2;
X5:    p=q; q=l[p]; if( q!=0 ) goto X3;
X6: --k;
    if( k==0 ) return;
    p=u[k], q=a[k], l[p]=q;
    goto X5;
    delete []a; delete []u; delete []l;
}

int      main( )
{
    int n;
    cin>>n;
    f( n );
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -