NOJ 1073 八皇后

来源:互联网 发布:文章发布系统php源码 编辑:程序博客网 时间:2024/06/10 05:01

2014/7/15


我是彩笔系列


        水军主力


              上海邀请赛打铁,我果然是菜比....连水题都不会....算法一个没学。


#include<stdio.h>#include<string.h>#include<cmath> #include<algorithm>#include<iostream>#include<queue>#include<stack>#include<map>#include<climits>#include<vector>using namespace std;#define F(n) for(int i = 0;i < n; i++)#define FF(n) for(int i = 1;i <= n; i++)#define f(n) for(int j = 0;j < n; j++)#define ff(n) for(int j = 1;j <= n; j++) #define lson pos<<1,l,mid#define rson pos<<1|1,mid+1,r#define sc(n) scanf("%d",&n)#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n)) const int N=100;int tot = 0;int  n;int vis[3][N<<2];int  p[N];void sch(int cur){if(cur == n){if(tot)printf("\n");for(int i = 0;i < n; i++)for(int j = 0;j < n; j++){if(p[i] == j)printf("*");else printf("-");if(j == (n - 1))printf("\n");}tot++;}else{for(int i = 0;i < n; i++)      {if(!vis[0][i]&&!vis[1][cur + i]&&!vis[2][cur-i+n])            {            p[cur] = i;            vis[0][i] = vis[1][cur+i]=vis[2][cur - i+n]= 1;            sch(cur + 1);            vis[0][i] = vis[1][cur+i]=vis[2][cur - i+n]= 0;            }  }}  }int main(){ int temp = 0;    while(~scanf("%d",&n))    {    if(temp)printf("\n");    tot=0;    for(int i =0 ;i < 3; i++)    for(int j = 0;j < N<<2; j++)    vis[i][j]=0;        sch(0);    temp=1;      // printf("%d\n",tot);    }    return 0;}


0 0
原创粉丝点击