入园 登录
钢琴花园 返回首页

的个人空间 http://www.pianohl.com/bbs/?0 [收藏] [复制] [分享] [RSS]

日志

N皇后(鄙人自己编的,如有问题,请多指教)

已有 424 次阅读2008-8-21 02:20

//N Queens

#include <cstdio>
#define Max 20
int n;
int queenx[Max];
int queeny[Max];
bool mark[Max]={0};
int counter=0;
bool opinion(){
    int i,j;
    for(i=0;i&lt;n;i++)    
    for(j=i+1;j&lt;n;j++)    
    if((queenx[i]+queeny[i]==queenx[j]+queeny[j])||(queenx[i]-queeny[i]==queenx[j]-queeny[j]))
        return false;
    return true;
}
void output(){
    int i,j;
    for(i=0;i&lt;n;i++)
            printf("( %d , %d )\t",queenx[i],queeny[i]);
    putchar('\n');
    putchar('\n');
}
void f(int pointer){
    int i;

    if(pointer==n){
        if(opinion()){    counter++;    output();    }
    }
    else{
        for(i=0;i&lt;n;i++){
            if(!mark[i]){
                queenx[pointer]=i;
                mark[i]=1;
                f(pointer+1);
                mark[i]=0;
            }
        }
    }            
}
int main(){
    
    scanf("%d",&n);
    int i;
    for(i=0;i&lt;n;i++)    queeny[i]=i+1;
   
    f(0);
   
    printf("%d",counter);
   
    return 0;
}
 

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 入园

小黑屋|手机版|Archiver|钢琴花园 ( 豫ICP备18008254号 )

GMT+8, 2018-12-10 06:33

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部