zoukankan      html  css  js  c++  java
  • 【老鼠走迷宫一】

    /*
    老鼠走迷宫一 
    说明:
    老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1表示老鼠行走的路径,试以程
    式求出由入口至出口的路径。
    
    解法:
    老鼠的走法有上,下,左,右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前
    进方向,如此在阵列中依序测试四个方向,知道走到出口为至,这是返回的基本题,请直接看程式应就可以理解 
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int visit(int , int );
    
    int maze[7][7] = {
        {2, 2, 2, 2, 2, 2, 2},
        {2, 0, 0, 0, 0, 0, 2},
        {2, 0, 2, 0, 2, 0, 2},
        {2, 0, 0, 2, 0, 2, 2},
        {2, 2, 0, 2, 0, 2, 2},
        {2, 0, 0, 0, 0, 0, 2},
        {2, 2, 2, 2, 2, 2, 2} 
    };
    
    int startI = 1, startJ = 1;
    int endI = 5, endJ = 5;
    int success = 0;
    
    int main(void)
    {
        int i, j;
    
        printf("显示迷宫:
    ");
        for(i = 0; i < 7; i++)
        {
            for(j = 0; j < 7; j++)
            {
                if(maze[i][j] == 2)
                    printf("#");
                else
                    printf(" ");
            }
            printf("
    ");
        }
        
        if(visit(startI, startJ) == 0)
            printf("
    没有找到出口!
    ");
        else
        {
            printf("
    显示路径:
    ");
            for(i = 0; i < 7; i++)
            {
                for(j = 0; j < 7; j++)
                {
                    if(maze[i][j] == 2)
                        printf("#");
                    else if(maze[i][j] == 1)
                        printf("1");
                    else
                        printf(" ");
                }
                printf("
    ");        
            }
        }
        return 0;
    } 
    
    int visit(int i, int j)
    {
        maze[i][j] = 1;
        
        if(i == endI && j == endJ)
            success = 1;
            
        if(success != 1 && maze[i][j+1] == 0)
            visit(i, j+1); 
        if(success != 1 && maze[i+1][j] == 0)
            visit(i+1, j);
        if(success != 1 && maze[i][j-1] == 0)
            visit(i, j-1);
        if(success != 1 && maze[i-1][j] == 0)
            visit(i-1, j);
            
        if(success != 1)
            maze[i][j] = 0; 
        return success;
    }

    运行结果:

    转载本博请联系作者! 如有问题请在评论区评论或者发邮件:@libras

  • 相关阅读:
    git的版本回退
    elementui的表格有多选框时翻页记住之前选择的数据
    git操作总结
    POJ 3107 Godfather
    HDU 4405 Aeroplane chess
    ZOJ 3626 Treasure Hunt I
    UVA 10537 Toll! Revisited
    POJ 3093 Margaritas on the River Walk
    POJ 1655 Balancing Act
    POJ 2342 Anniversary party
  • 原文地址:https://www.cnblogs.com/libra-yong/p/6296260.html
Copyright © 2011-2022 走看看