zoukankan      html  css  js  c++  java
  • Catch That Cow

    题目描述

    Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting. * Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute * Teleporting: FJ can move from any point X to the point 2 × X in a single minute. If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

    输入

    Line 1: Two space-separated integers: N and K

    输出

    Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

    示例输入

    5 17

    示例输出

    4
    广度优先搜索练习
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<queue>
     5 using namespace std;
     6 
     7 int vis[100100];
     8 struct node
     9 {
    10     int date;
    11     int step;
    12 };
    13 int bfs(int s, int t)
    14 {
    15     queue<node>que;
    16     struct node tmp,ans;
    17     int tx;
    18     ans.date = s;
    19     ans.step = 0;
    20     que.push(ans);
    21     vis[s] = 1;
    22     while(!que.empty())
    23     {
    24         tmp = que.front();
    25         que.pop();
    26         tx = tmp.date-1;
    27         if(tx < 0 || tx > 100000);
    28         else if(!vis[tx])
    29         {
    30             vis[tx] = 1;
    31             ans.date = tx;
    32             ans.step = tmp.step+1;
    33             que.push(ans);
    34             if(ans.date == t)
    35                 return ans.step;
    36         }    
    37         tx = tmp.date+1;
    38         if(tx < 0 || tx > 100000);
    39         else if(!vis[tx])
    40         {
    41             vis[tx] = 1;
    42             ans.date = tx;
    43             ans.step = tmp.step+1;
    44             que.push(ans);
    45             if(ans.date == t)
    46                 return ans.step;
    47         }
    48         tx = tmp.date*2;
    49         if(tx < 0 || tx > 100000);
    50         else if(!vis[tx])
    51         {
    52             vis[tx] = 1;
    53             ans.date = tx;
    54             ans.step = tmp.step+1;
    55             que.push(ans);
    56             if(ans.date == t)
    57                 return ans.step;
    58         }
    59     }
    60 }
    61 
    62 int main()
    63 {
    64     int s,t;
    65     scanf("%d %d",&s,&t);
    66     if(s == t) 
    67     {
    68         printf("0
    ");
    69     }
    70     else
    71     {
    72         memset(vis,0,sizeof(vis));
    73         printf("%d
    ",bfs(s,t));
    74     }
    75     return 0;
    76 }
    View Code
  • 相关阅读:
    Centos7创建用户su登录后显示为 bash-4.1$
    winserver 搭建 Citrix License 许可服务器
    Centos7扩展存储空间
    CentOS7配置crate集群
    CentOS7安装cratedb
    初探Vue
    浅谈web攻防
    响应式布局
    JavaScript正则表达式,你真的知道?
    15个关于Chrome的开发必备小技巧[译]
  • 原文地址:https://www.cnblogs.com/LK1994/p/3191733.html
Copyright © 2011-2022 走看看