当前位置: 首页>>代码示例>>C++>>正文


C++ CHash::AddValue方法代码示例

本文整理汇总了C++中CHash::AddValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CHash::AddValue方法的具体用法?C++ CHash::AddValue怎么用?C++ CHash::AddValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CHash的用法示例。


在下文中一共展示了CHash::AddValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: GetSlove

UINT CEightPuzzleGame::GetSlove ()
{
	int nCurValue = this->ConvertMetrixToInt ( this->bBegMetrix ) ;
	int nEndValue = this->ConvertMetrixToInt ( this->bEndMetrix ) ;

	vector<ITEM> Queue ;				// 广搜的辅助队列
	CHash Hash ;						// Hash表,用于保存状态
	Queue.clear () ;			
	Queue.push_back ( ITEM(-1,nCurValue) ) ;
	Hash.AddValue ( nCurValue ) ;

	int nCurIndex = 0, nTotalIndex = 1 ;
	while ( nCurIndex < nTotalIndex )
	{
		if ( nCurIndex == 200000 )
			return 0 ;

		nCurValue = Queue[nCurIndex].nValue ;
		for ( int i = 0; i < 4; i++ )		// 枚举4个方向
		{
			this->ConvertIntToCurMetrix ( nCurValue ) ;
			if ( this->SingleMove ( i ) == FALSE )
				continue ;
			int nValue = this->ConvertMetrixToInt ( this->bCurMetrix ) ;
			// 如果这个状态首次出现,则添加辅助队列并保存到hash表
			if ( Hash.IsValueExist ( nValue ) == FALSE )
			{
				nTotalIndex ++ ;
				Hash.AddValue ( nValue ) ;
				Queue.push_back ( ITEM(nCurIndex,nValue) ) ;
				// 达到目标状态时,提取路径,注意路径为倒序
				if ( nValue == nEndValue )
				{
					this->PathList.clear () ;
					this->PathList.push_back ( nValue ) ;

					int nIndex = nCurIndex, nStep = 0 ;
					while ( TRUE )
					{
						nStep ++ ;
						this->PathList.push_back ( Queue[nIndex].nValue ) ;
						if ( ( nIndex = Queue[nIndex].nIndex ) == -1 )
							break ;
					}
					return nStep ;
				}
			}
		}
		nCurIndex++ ;
	}

	return 0 ;
}
开发者ID:karllen,项目名称:Windows_Program,代码行数:53,代码来源:EightPuzzleGame.cpp


注:本文中的CHash::AddValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。