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

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

?? a_star_m_c.c

?? 使用A*算法解決傳教士與野人的問題
?? C
?? 第 1 頁 / 共 2 頁
字號:
 *                                                    *
 * 返回值:無                                         *
 ******************************************************/
{
	printf("((%d %d %d) %f %f)\n", pNode->m, pNode->c, pNode->b, pNode->g, pNode->f);
}

void PrintPath(struct NODE *pGoal) 
/******************************************************
 * 功能:在屏幕上打印解路徑。在搜索過程中,每個節點指 *
 *       向其父節點,從目標節點開始,逆向打印各節點, *
 *       既得到解路徑                                 *
 *                                                    *
 * 入口參數:                                         *
 *   pGoal:指向求解得到的目標節點                    *
 *                                                    *
 * 返回值:無                                         *
 ******************************************************/
{
	if (pGoal == NULL) return;
	PrintPath(pGoal->pFather);	//遞歸
	printf("(%d %d %d)\n", pGoal->m, pGoal->c, pGoal->b);
}

int IsGrandFather(struct NODE *pNode, struct NODE *pFather)
/******************************************************
 * 功能:判斷一個節點是否與自己的祖父節點所表示的狀態 *
 *       一樣                                         *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *   pFather:指向給定節點的父節點的指針              *
 *                                                    *
 * 返回值:當給定節點所表示的狀態與自己的祖父一樣時, *
 *         返回1,否則返回0                           *
 ******************************************************/
{
	if (pFather == NULL) return 0;
	if (pFather->pFather == NULL) return 0;
	return Equal(pNode, pFather->pFather);
}

int IsGoal(struct NODE *pNode)
/******************************************************
 * 功能:判斷給定節點是否為目標節點                   *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *                                                    *
 * 返回值:當給定節點是目標節點時,返回1,否則返回0   *
 ******************************************************/
{
	if (pNode->m == 0 &&
		pNode->c == 0 &&
		pNode->b == 0) return 1;
	else return 0;
}

int Safe(struct NODE *pNode)
/******************************************************
 * 功能:判斷一個狀態是否為安全的,即是否滿足在河的任 *
 *       何一岸,傳教士人數不少于野人人數,或者只有野 *
 *       人而沒有傳教士。對于超出參數范圍的狀態,也認 *
 *       為是不安全的                                 *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *                                                    *
 * 返回值:當給定節點安全時,返回1,否則返回0         *
 ******************************************************/
{
	if (pNode->m < 0 ||
		pNode->c < 0 ||
		pNode->m > M ||
		pNode->c > M) return 0;
	if (pNode->m == M ||
		pNode->m == 0) return 1;
	return (pNode->m == pNode->c);
}

int H_Function(struct NODE *pNode)
/******************************************************
 * 功能:計算給定節點的h值,h = m + c - 2b            *
 *                                                    *
 * 入口參數:                                         *
 *   pNode:指向給定節點的指針                        *
 *                                                    *
 * 返回值:h值                                        *
 ******************************************************/
{
	return pNode->m + pNode->c - 2*pNode->b;
}

struct NODE *A_Star(struct NODE *s)
/******************************************************
 * 功能:A*算法主函數                                 *
 *                                                    *
 * 入口參數:                                         *
 *   s:指向初始節點的指針                            *
 *                                                    *
 * 返回值:指向求解得到的目標節點的指針,或者返回NULL *
 *         表示空間不夠用或者找不到問題的解           *
 ******************************************************/
{
	struct NODE *n = NULL, *m = NULL, *pNode = NULL;
	int i, j;
	g_pOpen = s;	//初始化OPEN表和CLOSED表
	g_pClosed = NULL;
	while (g_pOpen)		//OPEN表不空
	{
		n = g_pOpen;	//取出OPEN表的第一個元素n
		if (IsGoal(n)) return n; //如果n為目標節點,則成功結束
		g_pOpen = g_pOpen->pNext; //否則,從OPEN表中刪除n
		g_pClosed = AddToClosed(n, g_pClosed);	//將n加入到CLOSED中

		// 以下兩重循環,i表示上船的傳教士人數,j表示上船的野人人數
		for (i = 0; i <= K; i++)
		{
			for (j = 0; j <= K; j++)
			{
				if (i + j == 0 ||	//非法的上船組合
					i + j > K ||
					(i != 0 && i < j)) continue;

				if (n->b == 1)	//當船在左岸時
				{
					m = NewNode(n->m-i, n->c-j, 0);	//產生下一個狀態m
				}
				else	//當船在右岸時
				{
					m = NewNode(n->m+i, n->c+j, 1);	//產生下一個狀態m
				}

				if (m == NULL) return NULL;	//如果空間不夠用,則失敗結束

				if (IsGrandFather(m, n) || !Safe(m))	
					//如果m與他的祖父狀態相同,或者是一個非法狀態,則舍棄m
				{
					free(m);
					continue;
				}

				//當m是合法狀態時
				m->pFather = n;	//標記其父節點為n
				m->g = n->g + 1;	//其g值為其父節點的g值加1
				m->f = m->g + H_Function(m);	//計算其f值,f = g+h

				if (pNode = In(m, g_pOpen))	//如果m已經出現在OPEN表中
				{
					if (m->f < pNode->f)	//如果m的f值小于OPEN表中相同狀態的f值
					{
						//則將該節點從OPEN表中刪除,并將m加入到OPEN表中。
						g_pOpen = AddToOpen(m, Del(pNode, g_pOpen));
						free(pNode);
					}
					else	//否則舍棄m
					{
						free(m);
					}
				}
				else if (pNode = In(m, g_pClosed))	//如果m已經出現在CLOSED中
				{
					if (m->f < pNode->f)	//如果m的f值小于CLOSED表中相同狀態的f值
					{
						//則將該節點從CLOSED表中刪除,并重新添加到OPEN表中
						g_pClosed = Del(pNode, g_pClosed);
						g_pOpen = AddToOpen(m, g_pOpen);
						free(pNode);
					}
					else	//否則舍棄m節點
					{
						free(m);
					}
				}
				else	//其他情況,將m加入到OPEN表中
				{
					g_pOpen = AddToOpen(m, g_pOpen);
				}
			}
		}
	}
	//如果OPEN表空了,還沒有找到目標節點,則搜索以失敗結束,
	//返回NULL
	return NULL;	
}

void main(void)
{
	struct NODE *s;
	s = NewNode(M, C, 1);	//設置初始節點
	s = A_Star(s);	//A*搜索
	if (s) PrintPath(s);	//如果找到問題的解,則輸出解路徑
	else printf("找不到問題的解!/n");
	FreeList(g_pOpen);	//釋放動態節點
	FreeList(g_pClosed);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人都懂的| 91精品国产综合久久久久| 久久综合色婷婷| 日本伊人色综合网| 日韩午夜电影在线观看| 日本大胆欧美人术艺术动态| 欧美日韩成人综合| 亚洲va国产天堂va久久en| 91黄色免费网站| 亚洲小说春色综合另类电影| 欧洲精品一区二区| 国产蜜臀97一区二区三区| 成人sese在线| 亚洲精品日产精品乱码不卡| 欧美中文字幕一区| 亚洲成人精品在线观看| 欧美老女人在线| 久久精品免费观看| 欧美丰满一区二区免费视频| 日韩av一区二| 国产网红主播福利一区二区| 成人av高清在线| 亚洲六月丁香色婷婷综合久久 | 亚洲第一电影网| 欧美精品日韩精品| 精品中文av资源站在线观看| 国产亚洲精品超碰| av在线一区二区三区| 亚洲天堂精品视频| 欧美视频日韩视频在线观看| 青青青爽久久午夜综合久久午夜| 精品国产91久久久久久久妲己| 高清国产一区二区| 国产午夜精品福利| 日本精品视频一区二区| 日韩成人伦理电影在线观看| 国产亚洲一区二区在线观看| 91在线无精精品入口| 亚洲成人www| 久久色在线观看| 色综合一个色综合亚洲| 亚洲成人手机在线| 欧美精品一区二区三区四区 | 亚洲国产成人va在线观看天堂 | 99国产精品99久久久久久| 亚洲精品国产一区二区精华液| 日韩区在线观看| 99久久综合精品| 日本sm残虐另类| 国产精品色呦呦| 91麻豆精品国产91久久久| 日韩高清不卡一区二区| 国产精品理论在线观看| 9191久久久久久久久久久| 国产91对白在线观看九色| 天使萌一区二区三区免费观看| 久久夜色精品一区| 欧美女孩性生活视频| 国产一区二区91| 亚洲成人久久影院| 亚洲视频一区二区在线观看| 欧洲精品一区二区| 国产成人精品免费在线| 日韩av电影免费观看高清完整版| 国产精品电影一区二区三区| 日韩一区二区三区在线视频| 91久久国产综合久久| 成人免费看的视频| 一区二区三区四区激情| 久久精品一区二区| 日韩欧美在线123| 91啪亚洲精品| av网站一区二区三区| 国产一区不卡在线| 久久99久久久欧美国产| 亚洲成人免费视| 亚洲丝袜制服诱惑| 欧美国产日产图区| 国产精品午夜免费| 国产精品久久一级| 综合精品久久久| 亚洲黄色片在线观看| 亚洲一区二区三区三| 亚洲一级电影视频| 日韩av中文字幕一区二区三区| 日韩av不卡一区二区| 蜜桃在线一区二区三区| 美腿丝袜在线亚洲一区| 韩国成人福利片在线播放| 国产91在线|亚洲| 99在线精品视频| 91黄色激情网站| 欧美巨大另类极品videosbest | 91精品国产综合久久婷婷香蕉 | 中文字幕亚洲综合久久菠萝蜜| 国产精品白丝在线| 亚洲精品v日韩精品| 亚洲成人av在线电影| 免费欧美日韩国产三级电影| 国产在线视频一区二区三区| 国产成人精品三级| 一本一本大道香蕉久在线精品 | 国模少妇一区二区三区| 国产99久久久久| 色婷婷一区二区三区四区| 欧美在线色视频| 日韩女优电影在线观看| 久久久三级国产网站| 国产精品每日更新| 亚洲午夜电影在线观看| 美日韩一级片在线观看| 国产精品亚洲午夜一区二区三区 | 不卡一区中文字幕| 欧美主播一区二区三区美女| 777奇米四色成人影色区| 久久久噜噜噜久久人人看 | 国产精品乡下勾搭老头1| av不卡在线观看| 7777精品伊人久久久大香线蕉| 久久久久久久综合色一本| 1024成人网| 另类小说色综合网站| 91香蕉视频在线| 日韩欧美国产一区二区三区| 亚洲欧美偷拍卡通变态| 日本最新不卡在线| 成人av资源站| 日韩免费成人网| 亚洲欧美偷拍卡通变态| 老汉av免费一区二区三区 | 午夜国产精品一区| 成人激情黄色小说| 日韩精品一区二区三区在线播放| 樱桃国产成人精品视频| 国产精品456| 日韩一区二区高清| 亚洲精品久久嫩草网站秘色| 国产大片一区二区| 5月丁香婷婷综合| 亚洲六月丁香色婷婷综合久久 | 欧美制服丝袜第一页| 日本一区二区高清| 琪琪一区二区三区| 日本久久电影网| 中文字幕在线一区免费| 国产精品一区二区x88av| 欧美日韩另类国产亚洲欧美一级| 国产精品欧美久久久久无广告| 日韩av在线免费观看不卡| 色综合天天综合在线视频| 26uuu久久综合| 麻豆成人91精品二区三区| 欧美精品少妇一区二区三区| 亚洲综合精品久久| 成人精品视频一区二区三区尤物| 精品国产电影一区二区| 蜜乳av一区二区三区| 91精品国产日韩91久久久久久| 亚洲成在线观看| 欧美日韩成人综合天天影院| 亚洲福利国产精品| 在线观看av不卡| 亚洲一区二区五区| 欧美日韩一卡二卡三卡| 亚洲成人av资源| 欧美日韩aaa| 日韩激情视频在线观看| 欧美一区二区在线观看| 日本女人一区二区三区| 日韩视频永久免费| 久久国产麻豆精品| 久久综合九色综合97_久久久| 九一久久久久久| 久久蜜桃一区二区| 国产999精品久久| 18成人在线观看| 精品视频在线免费观看| 午夜精品久久久久久久| 正在播放一区二区| 蜜臀av性久久久久蜜臀av麻豆 | 91精品国产免费久久综合| 美女脱光内衣内裤视频久久影院| 精品免费日韩av| 粉嫩aⅴ一区二区三区四区五区| 国产精品午夜春色av| 在线国产亚洲欧美| 石原莉奈在线亚洲三区| xnxx国产精品| 91麻豆高清视频| 午夜av电影一区| 欧美精品一区男女天堂| 99久久久精品免费观看国产蜜| 亚洲国产一区二区三区| 精品国内片67194| 成人ar影院免费观看视频| 亚洲一区在线观看免费| 精品欧美乱码久久久久久1区2区| 成人18精品视频| 日韩精品一级二级| 国产午夜精品一区二区三区视频|