• 最少步数


    最少步数
    时间限制: 3000ms内存限制: 128000KB64位整型: Java 类名:
    上一题 提交 运行结果 统计 讨论版 下一题
    题目描述
    这有一个迷宫,有0~8行和0~8列:

    1,1,1,1,1,1,1,1,1
    1,0,0,1,0,0,1,0,1
    1,0,0,1,1,0,0,0,1
    1,0,1,0,1,1,0,1,1
    1,0,0,0,0,1,0,0,1
    1,1,0,1,0,1,0,0,1
    1,1,0,1,0,1,0,0,1
    1,1,0,1,0,0,0,0,1
    1,1,1,1,1,1,1,1,1

    0表示道路,1表示墙。

    现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?

    (注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)

    输入
    第一行输入一个整数n(0<n<=100),表示有n组测试数据;
    随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
    输出
    输出最少走几步。
    样例输入
    2
    3 1 5 7
    3 1 6 7
    样例输出
    12
    11

    可以说是前面两个的升级版不一样的就是

    前面两个是把每一次递归是的值变为不符合提议的

    而显然这个题目不行,因为这是一个给定的地图

    所以要想寻找就必须新定义一个规模和地图一样的数组

    每次只变该数组,地图不做变换

    再记录步数,依次留下最少的步数,

    留到最后的,就是最少的步数 


    #include<stdio.h>
    int f[4][2]={0,-1,-1,0,0,1,1,0};
    int x1,y1,x2,y2,sum;
    int m[9][9]={
    1,1,1,1,1,1,1,1,1,
    1,0,0,1,0,0,1,0,1,
    1,0,0,1,1,0,0,0,1,
    1,0,1,0,1,1,0,1,1,
    1,0,0,0,0,1,0,0,1,
    1,1,0,1,0,1,0,0,1,
    1,1,0,1,0,1,0,0,1,
    1,1,0,1,0,0,0,0,1,
    1,1,1,1,1,1,1,1,1,


    },a[9][9];            //定义一个值可以变换的数组
    void dfs(int x,int y,int num)
    {
    if(x<0||y<0||x>8||y>8||a[x][y]||m[x][y]||num>=sum)  //这是重点,抛弃 越界的,不能走的,和步数比上一个大的
    {
    return ;
    }
    if(x==x2&&y==y2)
    {
    sum=num;
    return ;
    }
    a[x][y]=1;                      //新数组的每个值都是0,递归依次把它变成1
    for(int i=0;i<4;i++)
    {
    int ex=x+f[i][0],ey=y+f[i][1];
    dfs(ex,ey,num+1);
    }
    a[x][y]=0;                    //递归结束之后,把新数组中刚刚给他的值初始化,给他变回来。

    }
    int main()
    {
    int T;
    sum=1000;
    scanf("%d",&T);
    while(T--)
    {
    scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    dfs(x1,y1,0);
    printf("%d ",sum);
    }
    }

  • 相关阅读:
    Redis 主从复制
    LESSON THREE
    SSIS OLEDB COMMAND RULES
    Hadoop step by step _ install and configuration environment
    repcached的安装练习
    Check list
    简单对象定位——xpath定位
    简单对象定位
    Python webdriver API- 浏览器的操作
    第一个自动化脚本示例
  • 原文地址:https://www.cnblogs.com/tianxxl/p/6443627.html
Copyright © 2020-2023  润新知