有界深度优先搜索算法——八数码问题【人工智能导论习题实现】

本文介绍了使用有界深度优先搜索算法来解决经典的八数码问题。在实现过程中,需要注意防止数组越界,由于可能存在的状态组合数量巨大(389113种),因此需要合理设置数组大小。为了优化,可以设定一个搜索深度限制,以在限定深度内寻找解决方案。
摘要由CSDN通过智能技术生成
//在矩阵的输入中用 0 代替空格
#include<iostream>
#include<stack>
#include<queue>
#define st 0
using namespace std;
int path,num,X,Y,open_len,close_len,tar;
bool Find;
int path_matrix[389113][4][4];
int step[389113];
int Tar[4][4];
queue<int> open;
queue<int> close;
void init(){
	cout<<"please input initial matrix:"<<endl;
	for(int i = 1;i <= 3;i++)
	for(int j = 1;j <= 3;j++)
	cin>>path_matrix[st][i][j];
	open.push(st);
	open_len = 1;num++;
	cout<<"please input target matrix: "<<endl;
	for(int i = 1;i <= 3;i++)
	for(int j = 1;j <= 3;j++)
	cin>>Tar[i][j]; 
	Find = false;
}
void space_search(int matrix[4][4]){
	for(int i = 1;i <= 3;i++)
	for(int j = 1;j <= 3;j++){
		if(matrix[i][j] == 0){
			X = i;
			Y = j;
			return;
		}
	}	
}
void copy
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值