zoukankan      html  css  js  c++  java
  • hdu-2717(基础搜索bfs)

    题意:给你n和k,问你n最少花费多少代价能得到k;

    有两种变换:1、n++或者n--;

          2、n=n*2;

    两种代价每次的花费都是1;

    思路:一维的bfs,每次入队三个点,一个是n+1,一个是n-1,一个是n*2的点;

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #define maxn 100020
    using namespace std;
    int step[maxn*2];
    int visit[maxn*2];
    int main()
    {
        queue<int>q;
        int n,k;
        while(cin>>n>>k)
        {
            if(n>k)
                cout<<n-k<<endl;
            else if(n==k)
            {
                cout<<"0
    ";
            }
            else
            {
                memset(visit,0,sizeof(visit));
                memset(step,0,sizeof(step));
                visit[n]=1;step[n]=0;int flag=0;
                while(!q.empty())
                {
                    q.pop();
                }
                q.push(n);
                while(!q.empty())
                {
                    int temp=q.front();
                    q.pop();
                    int now;//cout<<"z
    ";
                    for(int i=1;i<=3;i++)
                    {
                        if(i==1)
                            now=temp+1;
                        else if(i==2)
                            now=temp-1;
                        else
                            now=temp*2;
                        if(visit[now]==0&&now<=maxn&&now>=0)
                        {
                            q.push(now);
                            step[now]=step[temp]+1;
                            visit[now]=1;
                        }
                        if(now==k)
                        {
                            cout<<step[now]<<endl;flag=1;
                           break;
                        }
                    }
                    if(flag==1)
                        break;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    POJ 1113 Wall
    POJ 2159 Ancient Cipher
    POJ 3253 Fence Repair
    HDU 5444 Elven Postman
    HDU 5432 Pyramid Split
    数据库 组合查询
    数据库 简单的数据查询
    数据库 聚合函数与分组
    数据库 使用DML语句更改数据
    数据库的数据完整性
  • 原文地址:https://www.cnblogs.com/huangdao/p/8541396.html
Copyright © 2011-2022 走看看