⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queen.h

📁 一个通过皇后算法构造稀疏矩阵的c++代码 矩阵以数组形式存储
💻 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 + -