亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 528209190_a_star_8.c

?? A star Algorithm of AI
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***   A*算法******/

#include <stdio.h>
#include <stdlib.h>

struct NODE
{
	char a[3][3];				//表示8數碼狀態的矩陣
	int i0;						//(i0,j0)表示0所在的位置
	int j0;						//
	double g;					//該節點的g值
	double f;					//該節點的f值
	struct NODE *pFather;		//指向該節點的父節點
	struct NODE *pNext;			//在OPEN表或者CLOSED表中,指向下一個元素
};

struct NODE *g_pOpen = NULL;	//全程變量,OPEN表
struct NODE *g_pClosed = NULL;	//全程變量,CLOSED表

struct NODE g_Goal = {{{1, 2, 3}, {8, 0, 4}, {7, 6, 5}}, 
                      1, 1, 0, 0, NULL, NULL};	//初始化一個目標節點

int Equal(struct NODE *pNode1, struct NODE *pNode2)
/******************************************************
 * 功能:判斷兩個節點所表示的狀態是否相等             *
 *                                                    *
 * 入口參數:                                         *
 *   pNode1:指向節點1的指針                          *
 *   pNode2:指向節點2的指針                          *
 *                                                    *
 * 返回值:當兩個節點所表示的狀態相等時,返回1,否則  *
 *         返回0                                      *
 ******************************************************/
{
	int i, j;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			if (pNode1->a[i][j] != pNode2->a[i][j])
				return 0;
		}
	}
	return 1;
}

struct NODE *NewNode(int i00, int i01, int i02,
					 int i10, int i11, int i12,
					 int i20, int i21, int i22)
/******************************************************
 * 功能:動態產生一個節點                             *
 *                                                    *
 * 入口參數:                                         *
 *   i00~i22:給出8數碼問題的一個狀態,分別為狀態矩陣 *
 *            [0,0]~ [2,2]元素                        *
 *                                                    *
 * 返回值:指向新產生的節點的指針,或者空間不夠用時, *
 *         返回NULL                                   *
 ******************************************************/
{
	struct NODE *pNode = NULL;
	int i, j;
	int bEnd = 0;
	pNode = malloc(sizeof(struct NODE));

	if (pNode == NULL) return NULL;	//當申請不到空間時,返回NULL

	pNode->a[0][0] = i00;
	pNode->a[0][1] = i01;
	pNode->a[0][2] = i02;
	pNode->a[1][0] = i10;
	pNode->a[1][1] = i11;
	pNode->a[1][2] = i12;
	pNode->a[2][0] = i20;
	pNode->a[2][1] = i21;
	pNode->a[2][2] = i22;

	pNode->g = 0;
	pNode->f = 0;
	pNode->pFather = NULL;
	pNode->pNext = NULL;

	//找'0'所在的位置,并記錄
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			if (pNode->a[i][j] == 0)
			{
				pNode->i0 = i;
				pNode->j0 = j;
				bEnd = 1;
				break;
			}
		}
		if (bEnd) break;
	}

	return pNode;
}

void FreeList(struct NODE *pList)
/******************************************************
 * 功能:釋放動態產生的鏈表                           *
 *                                                    *
 * 入口參數:                                         *
 *   pList:指向OPEN表或者CLOSED表的指針              *
 *                                                    *
 * 返回值:無                                         *
 ******************************************************/
{
	struct NODE *pNode = NULL;
	while (pList)
	{
		pNode = pList;
		pList = pList->pNext;
		free(pNode);
	}
}

struct NODE *In(struct NODE *pNode, struct NODE *pList)
/******************************************************
 * 功能:判斷一個節點是否在一個鏈表中                 *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *   pList:指向給點鏈表的指針                        *
 *                                                    *
 * 返回值:當pNode在pList中時,返回以pNode為首的鏈表  *
 *         的后一部分;否則返回NULL                   *
 ******************************************************/
{
	if (pList == NULL) return NULL;
	if (Equal(pNode, pList)) return pList;
	return In(pNode, pList->pNext);
}

struct NODE *Del(struct NODE *pNode, struct NODE *pList)
/******************************************************
 * 功能:從鏈表pList中刪除節點pNode                   *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *   pList:指向給定的鏈表                            *
 *                                                    *
 * 返回值:刪除給定節點后的鏈表                       *
 ******************************************************/
{
	if (pList == NULL) return pList;
	if (Equal(pNode, pList)) return pList->pNext;
	pList->pNext = Del(pNode, pList->pNext);
	return pList;
}

struct NODE *AddToOpen(struct NODE *pNode, struct NODE *pOpen)
/******************************************************
 * 功能:將一個節點按照f值(從小到大)插入到OPEN表中  *
 *                                                    *
 * 入口參數:                                         *
 *   pNode: 指向給定節點的指針                        *
 *   pOpen:指向OPEN表的指針                          *
 *                                                    *
 * 返回值:指向插入給定節點后OPEN表的指針             *
 *                                                    *
 * 注意:同一個節點(具有相同指針的一個節點),只能向 *
 *       表中添加一次,否則可能會造成循環鏈表         *
 ******************************************************/
{
	if (pOpen == NULL)	//OPEN表為空
	{
		pNode -> pNext = NULL;
		return pNode;
	}
	if (pNode->f < pOpen->f)	//給定節點的f值小于OPEN表第一個節點的f值
	{
		pNode->pNext = pOpen;	//插入到OPEN的最前面
		return pNode;
	}
	pOpen->pNext = AddToOpen(pNode, pOpen->pNext);	//遞歸
	return pOpen;
}

struct NODE *AddToClosed(struct NODE *pNode, struct NODE *pClosed)
/******************************************************
 * 功能:將一個節點插入到CLOSED表中                   *
 *                                                    *
 * 入口參數:                                         *
 *   pNode: 指向給定節點的指針                        *
 *   pClosed:指向CLOSED表的指針                      *
 *                                                    *
 * 返回值:指向插入給定節點后CLOSED表的指針           *
 *                                                    *
 * 注意:同一個節點(具有相同指針的一個節點),只能向 *
 *       表中添加一次,否則可能會造成循環鏈表         *
 ******************************************************/
{
	pNode->pNext = pClosed;
	return pNode;
}

void PrintNode(struct NODE *pNode)
/******************************************************
 * 功能:在屏幕上打印一個節點,用于調試程序           *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向節點的指針                            *
 *                                                    *
 * 返回值:無                                         *
 ******************************************************/
{
	int i, j;
	for (i = 0; i < 3; i++)
	{
		printf("|");
		for (j = 0; j < 3; j++)
		{
			printf(" %1d", pNode->a[i][j]);
		}
		printf(" |\n");
	}
	printf("(i0 = %d, j0 = %d, g = %f, f = %f)\n", 
		pNode->i0, pNode->j0, pNode->g, pNode->f);
}

void PrintList(struct NODE *pList)
/******************************************************
 * 功能:在屏幕上打印一個鏈表,用于調試程序           *
 *                                                    *
 * 入口參數:                                         *
 *   pList:指向鏈表的指針                            *
 *                                                    *
 * 返回值:無                                         *
 ******************************************************/
{
	while (pList)	//依次打印鏈表
	{
		PrintNode(pList);
		pList = pList->pNext;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产有无不卡| 久久久精品国产免费观看同学| 制服丝袜中文字幕一区| 久久久久久亚洲综合| 亚洲午夜久久久久| 国产黑丝在线一区二区三区| 欧美性大战xxxxx久久久| 26uuu亚洲综合色| 日韩高清中文字幕一区| 99国产精品99久久久久久| 日韩精品资源二区在线| 亚洲午夜精品久久久久久久久| av欧美精品.com| 精品国一区二区三区| 日韩中文欧美在线| 在线视频一区二区三区| 日韩一区在线看| 国产成人一区在线| 久久只精品国产| 极品销魂美女一区二区三区| 在线视频一区二区三区| 亚洲免费观看高清| 岛国一区二区在线观看| 欧美激情综合在线| 国产精品123区| 国产欧美综合色| 国产精品一区在线| 久久亚洲免费视频| 国产a级毛片一区| 国产亚洲成av人在线观看导航| 狠狠色狠狠色综合| 久久一区二区视频| 国产精品99久久久久久宅男| 久久精品视频在线免费观看| 国产高清不卡一区| 国产精品久久久久影视| 91毛片在线观看| 亚洲女同一区二区| 日本韩国视频一区二区| 一区二区三区久久久| 欧美在线三级电影| 天堂久久久久va久久久久| 欧美另类videos死尸| 青青草原综合久久大伊人精品优势| 555夜色666亚洲国产免| 日本中文字幕一区二区视频 | 亚洲一级电影视频| 欧美日韩精品一区二区三区四区| 一区二区三区日韩| 91麻豆精品国产91久久久久久 | 亚洲午夜在线观看视频在线| 欧美日韩一区二区三区四区五区| 亚洲超丰满肉感bbw| 日韩欧美久久一区| 国产成人精品午夜视频免费| 国产精品狼人久久影院观看方式| www.欧美.com| 一区二区三区四区精品在线视频| 欧美精品在线一区二区| 精品在线播放免费| 成人欧美一区二区三区在线播放| 日本精品视频一区二区| 久久av资源站| 国产精品久久久一本精品 | 中文字幕av一区二区三区高| 色综合一区二区| 日韩精品一卡二卡三卡四卡无卡| 久久久九九九九| 欧美三级视频在线播放| 韩国理伦片一区二区三区在线播放| 中文字幕+乱码+中文字幕一区| 欧美综合欧美视频| 国产乱对白刺激视频不卡| 亚洲美女免费视频| 精品国产免费一区二区三区四区 | 日韩综合小视频| 久久免费美女视频| 欧美午夜电影网| 国产成人av一区二区三区在线观看| 亚洲视频一二区| 亚洲精品一区二区三区福利| 色老头久久综合| 国产一区二三区| 亚洲自拍偷拍网站| 国产精品三级视频| 日韩一级精品视频在线观看| 一本高清dvd不卡在线观看 | 国产精品青草久久| 日韩免费成人网| 欧美日韩你懂得| 91原创在线视频| 国产精品资源在线看| 热久久国产精品| 婷婷激情综合网| 亚洲女人小视频在线观看| 国产网红主播福利一区二区| 91精品视频网| 51午夜精品国产| 欧美日韩一区三区| 在线亚洲人成电影网站色www| 成人国产精品免费| 久久99精品久久久久| 亚洲一区二区四区蜜桃| 亚洲视频一区二区在线| 亚洲欧洲日韩在线| 国产精品国产三级国产a| 国产欧美精品国产国产专区| 欧美一激情一区二区三区| 欧美欧美欧美欧美| 在线观看日韩国产| 在线一区二区三区四区| 色久综合一二码| 91麻豆视频网站| 色偷偷一区二区三区| 91麻豆免费看| 色老头久久综合| 欧美丝袜丝交足nylons| 在线免费一区三区| 在线观看亚洲精品视频| 在线影视一区二区三区| 欧洲中文字幕精品| 欧美日韩国产精选| 91精品国产欧美一区二区18| 欧美一区二区三区视频| 3atv在线一区二区三区| 欧美午夜寂寞影院| 日韩视频在线永久播放| 精品国产3级a| 久久久精品中文字幕麻豆发布| 欧美国产日韩精品免费观看| 国产精品免费视频网站| 亚洲日本在线视频观看| 亚洲资源中文字幕| 天堂久久一区二区三区| 精品一区二区三区日韩| 国产成a人亚洲精品| 91亚洲国产成人精品一区二三| 在线亚洲+欧美+日本专区| 777午夜精品视频在线播放| 欧美丰满美乳xxx高潮www| 久久久久久久性| 自拍偷拍欧美激情| 一区二区三区四区高清精品免费观看 | 欧美午夜精品久久久| 欧美日韩精品久久久| 精品国产伦一区二区三区免费| 国产精品网站导航| 午夜精品免费在线观看| 久久99国产精品久久99果冻传媒| 成人激情图片网| 欧美日韩亚洲综合一区| 2021国产精品久久精品| 亚洲视频一区在线观看| 美女视频黄a大片欧美| 成人av电影在线播放| 欧美肥妇bbw| 一区免费观看视频| 婷婷六月综合网| 成人免费av在线| 欧美高清性hdvideosex| 国产精品麻豆欧美日韩ww| 午夜视频在线观看一区二区| 韩国v欧美v日本v亚洲v| 色综合久久中文综合久久97| 久久蜜桃香蕉精品一区二区三区| 亚洲精品国产无天堂网2021| 久久精品久久综合| 欧美日韩一区中文字幕| 国产精品网站在线观看| 激情图片小说一区| 欧美精品一级二级| 2023国产精品自拍| 午夜欧美电影在线观看| 99久久精品免费观看| 欧美剧在线免费观看网站| 久久精品视频在线免费观看| 免费日韩伦理电影| 91国在线观看| 国产精品国产三级国产普通话99| 麻豆国产91在线播放| 欧美精品一二三| 亚洲男人电影天堂| 波多野结衣91| 久久久国际精品| 久久精品99久久久| 91精品一区二区三区在线观看| 亚洲精品va在线观看| 99视频在线精品| 国产精品成人免费在线| 成人黄色777网| 国产精品久久久久久久久果冻传媒 | 欧美国产欧美综合| 国产精品综合在线视频| 欧美成人a视频| 奇米四色…亚洲| 欧美网站一区二区| 亚洲狠狠爱一区二区三区| 欧美亚洲另类激情小说| ...xxx性欧美| 欧洲av在线精品|