A*算法实现

A*算法实现

根据前一篇文章描述实现的A*算法
发现这个程序的难点是在数据结构的设计上:

地图 . 表示可通过,x表示不可通过,@表示路径
原地图:起始点(10,0),目的点(39,19)
A*算法实现_第1张图片
以下为边角可穿透规则下的路径
A*算法实现_第2张图片
以下为边角不可穿透规则下的路径
A*算法实现_第3张图片

文件下载


题外话:
发现在C++primer上的程序没有经过验证
写标准输入排错的时候参考了一下c++primer中的代码
if (cin.fail())
{
    
if (cin.bad())
    
{
        
throw runtime_error("IO stream corrupt");
    }

    
if (cin.fail())
    
{
        cerr
<<"invalide input type,pls stick to the note!!!"<<endl;
        cin.clear();
        
continue;
    }

}
结果,一遇到非法输入就死循环,后来想想可能是输入缓冲区没有清空的缘故,就在clear后加了一句cin.ignore();
everything is OK
看来老外的书也没有想象中那么严谨。。。。。

你可能感兴趣的:(A*算法实现)