📄 queen.h
字号:
// queen.h
#include <time.h>
#include "Random.h"
class Queen{
public:
Queen();//默认的copy constructor。
// initiate the private datas
Queen(int n,int * QueenArray);
//deallocate the heap memory
~Queen();
//test the current permutation to see if it is the right permutation or not
int is_collision(int*dn,int*dp,int n);
//generate the initial permutation for N-queens
void generate_permutation(int* pi,int n);
//the procedure to find a specified permutation that can fit the N-queens rules
void find_a_solution(int*pi,int*sumpi,int*difpi,int*dn,int*dp,int n);
//save the the specified permutation of the N-queens include the overhead of the time
//void result_saved(const float&time);
Random *Myrandom;
private:
//pi为皇后位置的存储数组指针,以行为排列基准
//pi[i]={ , , … },如 表示第一行的第 列。
//sumpi为存放皇后所在位置负对角线的特征值数组指针
//difpi为存放皇后所在位置正对角线上的特征值数组指针
int* pi,*sumpi,*difpi;
//dn为存放每条负对角线上的冲突数的数组指针
//dp为存放每条正对角线上的冲突数的数组指针
int*dn,*dp;
// test the curent position of a queen is attacked or not
int test_collision(const int&ia,int n);
//test if the collisions is down or not after the exchange of two queens
int test_collision_down(const int&ib,const int&jb,int n);
//sum of collisions on each negative diagonals
void perform_swap(const int&ic,const int&jc,int n);
//sum of collisions on each negative diagonals
void sum_all_n_diagonals(int*pi,int*sumpi,int n);
//sum of collisions on each positive diagonals
void sum_all_p_diagonals(int*pi,int*difpi,int n);
//sum the eigenvalue of every position of a permutation for negative diagonal
void sum_each_n_diagonal(int*dn,int*sumpi,int n);
//sum the eigenvalue of every position of a permutation for positive diagonal
void sum_each_p_diagonal(int*dp,int*difpi,int n);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -