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

📄 state.cpp

📁 八皇后的A*算法 利用矩阵的行列变换
💻 CPP
字号:
#include "state.h"
#include <cmath>
#include <iostream>
using namespace std;

state::state()
{
	for(int i=0; i<N; i++)
		x[i]=N-1-i;
	h=0;
	g=N-1;
	f=h+g;	
}

state::~state()
{
}

void state::compute_g()
{
	int i,j;
	for(i=0; i<N; i++)
	{
		for(j=i+1; j<N; j++)		
			if(abs(x[i]-x[j])==abs(i-j)) g++;              		
		g--;
	}
	f=g+h;
}


void state::inc_h()
{
	h++;
	f++;
}

int state::get_f()
{return f;}

void state::show()	
{
	for(int i=0; i<N; i++)
	{
		for(int j=0; j<N; j++)
		{
			if(x[i]==j) cout<<"|*";
			else cout<<"| ";
		}
		cout<<"|\n";
	}
}

void state::trans(int i, int j)
{
	int t=x[i];
	x[i]=x[j];
	x[j]=t;
}

void state::operator =(state p)
{
	for(int i=0; i<N; i++)
		x[i]=p.x[i];
	h=p.h;
	g=p.g;
	f=p.f;
}

bool state::operator ==(state p)
{
	for(int i=0; i<N; i++)
		if(x[i]!=p.x[i]) return false;
	return true;
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -