zoukankan      html  css  js  c++  java
  • A广搜

    <span style="color:#330099;">/*
    A - 广搜 基础
    Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
    Submit
     
    Status
    Description
    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?
    
    Input
    Line 1: Two space-separated integers: N and K
    Output
    Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
    Sample Input
    5 17
    Sample Output
    4
    Hint
    The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
    By Grant Yuan
    2014.7.13
    */
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<queue>
    #include<cstdio>
    using namespace std;
    bool a[100003];
    typedef struct{
       int num;
       int sum;
    }dd;
    queue<dd>q;
    int n,k;
    int res;
    void slove()
    {int m,count;
       int x;
       dd init;
       while(!q.empty()){
    
           if(q.front().num==n)
           {  res=q.front().sum;
               break;
           }
    
        m=q.front().num;
        count=q.front().sum;
       x=m-1;
       if(a[x]==0)
         {   init.num=x;
             init.sum=count+1;
             q.push(init);
             a[x]=1;
         }
    
        x=m+1;
         if(a[x]==0)
         {
            init.num=x;
             init.sum=count+1;
             q.push(init);
             a[x]=1;
    
         }
    
         if(m%2==0){
             x=m/2;
          if(a[x]==0)
         {
             init.num=x;
             init.sum=count+1;
             q.push(init);
             a[x]=1;
         }}
         q.pop();}
    }
    
    int main()
    {
           scanf("%d%d",&n,&k);
        memset(a,0,sizeof(a));
        dd init;
        init.num=k;
        init.sum=0;
        a[k]=1;
        q.push(init);
        slove();
        cout<<res<<endl;
        return 0;
    }
    
    </span>

查看全文
  • 相关阅读:
    mysql 组合聚集函数
    mysql distinct()函数 去重
    mysql sum()函数 , 计算总和
    mysql max()函数,min()函数,获取最大值以及最小值
    mysql count() 函数,对结果统计计数
    三个实例演示 Java Thread Dump 日志分析
    借助LVS+Keepalived实现负载均衡
    配置Tomcat成为系统服务
    快速理解Docker
    tomcat 启动时设置 java 参数,mark
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10953763.html
  • Copyright © 2011-2022 走看看