您的位置:首页 > 产品设计 > UI/UE

Nqueen1.0

2015-09-04 10:24 441 查看

Nqueen.h

[code]#include<vector>
using namespace std;
extern int solutionNum;
void solveNqueen(int row,vector<int> &v,int N);
bool checkPosition(int row,int col,vector<int> &v);
void printSolution(vector<int> &v);


Nqueen.cpp

[code]#include"Nqueen.h"
#include<iostream>
#include<vector>
using namespace std;

void solveNqueen(int row,vector<int> &v,int N){
    for(int col=0;col<N;col++){
        if(checkPosition(row,col,v)){
            v[row]=col;
            if(row==N-1){
                ++solutionNum;
                //printSolution(v);
                return;
            }
            solveNqueen(row+1,v,N);
        }
    }

}

bool checkPosition(int row,int col,vector<int> &v){
    for(int x=0;x<row;++x){
        if(abs(row-x)==abs(col-v[x])||col==v[x])
            return 0;
    }
    return 1;
}

void printSolution(vector<int> &v){
    cout<<solutionNum<<":::"<<endl;
    for(auto p:v)
        cout<<p<<'\t';
    cout<<endl;
}


main.cpp

[code]#include"Nqueen.h"
#include<iostream>
#include<vector>
using namespace std;

int solutionNum=0;

int main(){
    int N;
    cout<<"please input the value of N:"<<endl;
    cin>>N;
    vector<int> v(N);
    solveNqueen(0,v,N);
    cout<<"The total solition number is::"<<solutionNum<<endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: