设为首页 加入收藏

TOP

C语言重解经典回溯算法案例-迷宫问题(十一)
2018-03-02 06:57:26 】 浏览:1214
Tags:语言 经典 回溯 算法 案例 迷宫 问题
sp;                           else
                                    return (1);
                            }
                            else
                            {
                                if (d==8||d==1||d==2||d==6||d==7)
                                    return (0);
                                else
                                    return (1);
                            }
                        }
                    }
                }
            }
        }
    }
    else
    {
        return (1);
    }
}


int barrier(int i, int j, int d, int **p)
{
    int m, n;


    m=i;
    n=j;
    convert (&m, &n, d);


    if (*(p[m]+n)==0)
        return (1);
    else
        return (0);
}


int visit(int i, int j, int d, int **t)
{
    int m, n;


    m=i;
    n=j;
    convert (&m, &n, d);


    if (*(t[m]+n)==0)
        return (1);
    else
        return (0);
}


int direction(int i, int j, int d, int n, int m, int **p, int **t)
{
    if (boundary(i, j, d, n, m)==0) //(i,j)元在d方向为边界
    {
        return (0);  //d方向不可走
    }
    else
    {
        if (barrier(i, j, d, p)==0)  //(i,j)元在d方向遇到障碍
        {
            return (0);    //d方向不可走
        }
        else
        {
            if (visit(i, j, d, t)==0)  //(i,j)元在d方向上的相邻单元已经走过
                return (0);    //d方向不可走
            else
                return (1);    //d方向可走
        }
    }
}


int trial(int i, int j, int k, int n, int m, int **p, int **t)
{
    int q;
    q=k;


    for (q++; q<=8; q++)    //从k方向的下一方向开始寻找从(i,j)元可走的方向
    {
        if (direction(i, j, q, n, m, p, t)==1)
            return (q);      //找到可走方向,将其返回
    }


    return (0);  //没有可走方向,返回0
}


首页 上一页 8 9 10 11 下一页 尾页 11/11/11
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言编程构造拉丁方阵和正交拉丁.. 下一篇C语言实现N皇后问题非递归求解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目