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

    比较简单的搜索,不过我的内存开得太大了,不知道怎么缩减

    一开始内存开得太小了,忘了可能有一步是X*2,所以总数值可能大于100000,所以RE了

    #include<iostream>
    #include<string>
    #include<queue>
    using namespace std;
    int n,k;
    int vis[200002];
    struct node
    {
    	int x,cnt;
    	node(int _x=0,int _cnt=0):x(_x),cnt(_cnt){};
    };	
    queue<node> Q;
    void bfs()
    {
    	memset(vis,0,sizeof(vis));
    	node f;
    	f.x=n;f.cnt=0;
    	while(!Q.empty())
    		Q.pop();
    	Q.push(f);
    	vis[f.x]=1;
    	while(!Q.empty())
    	{
    		node t=Q.front();
    		Q.pop();
    		if(t.x==k) 
    		{
    			cout<<t.cnt<<endl;
    			return;
    		}
    		
    		if(t.x>k&&!vis[t.x-1])//若t.x>k,则不可能在加1或者乘以2
    		{
    			Q.push(node(t.x-1,t.cnt+1));
    			vis[t.x-1]=1;
    			continue;
    		}
    			if(t.x*3<=2*k)//原形是这样的,t.x*2-k<=k-t.x
    			{
    				if(!vis[t.x*2])
    				{
    					Q.push(node(t.x*2,t.cnt+1));
    				    vis[t.x*2]=1;
    				}
    			}
    				if(!vis[t.x-1])
    				{Q.push(node(t.x-1,t.cnt+1));
    				vis[t.x-1]=1;}
    				if(!vis[t.x+1])
    				{vis[t.x+1]=1;
    				Q.push(node(t.x+1,t.cnt+1));}
    	   }
    }
    int main()
    {
    	while(cin>>n>>k)
    	{
    		if(n>k)
    		{ cout<<n-k<<endl;continue;}
    		bfs();
    	}
    	return 0;
    }
    
  • 相关阅读:
    IOC理论推导
    spring leile
    缓存
    动态SQL
    canvas小球运动
    jdk1.7后字符串的总结
    用ssm框架简单创建一个增删改查案列
    京东物流居家品类各区域联系人
    京东网址收藏
    京东自营申请新品打标方法
  • 原文地址:https://www.cnblogs.com/nanke/p/2135636.html
Copyright © 2011-2022 走看看