Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C错误回溯法解迷宫_C_Backtracking_Maze - Fatal编程技术网

用C错误回溯法解迷宫

用C错误回溯法解迷宫,c,backtracking,maze,C,Backtracking,Maze,我正在努力找到走出迷宫的最佳方法([N][N]数组,你有一个is_min的原型吗?事实上,这条消息告诉了你几乎所有的事情。is_min的原型是什么意思?好的……那么展示完整的代码。Path的主要调用你需要在使用函数之前声明它们。如果你使用的是一个仍然允许古老的C90语义的C编译器,而不是在旧的C99语义或当前的C11语义中,编译器根据您使用的is_min()假设它返回一个int,当您定义它并说它返回void(无)时,它会感到不安相反。这就是错误消息的意思。至少,在使用函数之前要声明它们。通常,最

我正在努力找到走出迷宫的最佳方法([N][N]数组,你有一个
is_min
的原型吗?事实上,这条消息告诉了你几乎所有的事情。is_min的原型是什么意思?好的……那么展示完整的代码。Path的主要调用你需要在使用函数之前声明它们。如果你使用的是一个仍然允许古老的C90语义的C编译器,而不是在旧的C99语义或当前的C11语义中,编译器根据您使用的
is_min()
假设它返回一个
int
,当您定义它并说它返回
void
(无)时,它会感到不安相反。这就是错误消息的意思。至少,在使用函数之前要声明它们。通常,最好在使用函数之前定义它-颠倒函数的顺序。
int search_path(int n, int maze[][N], int i,  int j){

    int maxlen = 400;
    int current_best;


    if (maze[i][j] == 0) return False;
    if (maze[i][j] == -1) return False;
    if (i==N-1 && j==N-1 ) return True;

    maze[i][j] = -1;

    if(i < N-1) 
        is_min(n,maze,i,j+1,&maxlen);
    if  (i >0 ) 
        is_min(n,maze,i-1,j,&maxlen) ;
    if  (j < N-1 ) 
        is_min(n,maze,i,j+1,&maxlen) ;
    if  (j >0 ) 
        is_min(n,maze,i,j-1,&maxlen);

     maze[i][j] = 1;

    if ((maxlen == 400)||(maxlen ==0))
        return False;

     return maxlen+1;

};

void is_min(int n, int maze[][N], int i, int j, int *maxlen){

    int current_best = search_path(n,maze, i, j);

    if ((current_best < *maxlen) && (current_best > 0)){
        *maxlen = current_best;};
};





    void path(int n, int maze[][N])
{
    //find best path, starting from 0,0
    int best = search_path(n, maze, 0,0);

    if (best == 0){
        printf("No path found!\n");}
    else
        printf("Shortest path length is:%d\n", best);

 }