讨论 / 你们下去运行运行,很神奇的N皇后
lijie201602 2017-09-24 01:21:13
点我顶贴 收藏 删除
#include<iostream>

#include<list>

#include<cstdio>

using namespace std;

list<int>sol;

int n;

int uplimit;

void print()

{

printf("\n");

list<int>::iterator i;

for(i=sol.begin();i!=sol.end();i++)

{

int tmp=*i,cnt=0;

while(tmp!=1)

{

cnt++;

tmp=tmp>>1;

}

for(int j=0;j<cnt;j++) printf("■");

printf("○");

for(int j=cnt+1;j<n;j++)printf("■");

printf("\n");

}

printf("\n");

}

void doans(int r,int ld,int rd)

{

if(r!=uplimit)

{

int pos=uplimit&~(r|ld|rd);

while(pos!=0)

{

int p=pos&(~pos+1);

pos-=p;

sol.push_back(p);

doans(r+p,(ld+p)<<1,(rd+p)>>1);

sol.pop_back();

}

}

else print();

}

int main()

{

scanf("%d",&n);

uplimit=(1<<n)-1;

doans(0,0,0);

return 0;

}

查看更多回复
提交回复