ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

题目:Catch That Cow(C语言实现)

2022-01-17 14:04:20  阅读:432  来源: 互联网

标签:C语言 Cow int visit next start step Catch now


n 题目描述:给定一个 n,k (0 <= n ,k <= 100,000) ;对 n 有三种操作,分别为 n=n+1,n=n-1,n=2*n 。现在要求用最少的操作次数使得 n 变为 k 。 n 样例输入:

   5 17

n 样例输出:

   4

Hint:5-10-9-18-17

代码实现:

#include<stdio.h>
#include<stdlib.h>
#include <mem.h>
#define position 100005
int n,k;
int rear=0,front=0;//rear头,front尾 
struct num{
    int x;//位置坐标
    int step;    //不数 
};
typedef struct num Node;

bool visit[position];//有没有走过的标识
 
void bfs(){
    Node steps[position]; //定义队列数组 
    
    Node start,now,next; //定义变量 
    
    memset(visit,false,sizeof(visit));//数组都没走过赋false 
    
    start.x=n;//农夫位置 
    
    start.step=0;//步数 
    
    steps[rear++]=start;//把第一个存进去 
    
    visit[start.x]=true;    
    
    while(rear!=front){//头不等于尾 
        
        now=steps[front++];//取队列首元素表示当前位置并且首元素出列
        
        if(now.x==k)//看看是否满足条件  打印结束 
        {
            printf("%d\n",now.step);
            return ;
        }
        
        for(int i=0;i<3;i++)
        {
            if(i==0)//第一种 
                next.x=now.x+1;
            if(i==1)//第二种 
                next.x=now.x-1;
            if(i==2)//第三种 
                next.x=now.x*2;
            if(next.x>=0&&next.x<position&&!visit[next.x])//肯定要大于0,同时要小于数组最大position并且不能去去过的地方 
            {
                visit[next.x]=true; //走过的位置赋true
                next.step=now.step+1; //步数加一 
                steps[rear++]=next; //入对 
            }
        }        
    } 
}
int main()
{
    scanf("%d %d",&n,&k);
    bfs();
    return 0;
}

希望大家多多评论一下

 

标签:C语言,Cow,int,visit,next,start,step,Catch,now
来源: https://blog.csdn.net/weixin_61810048/article/details/122538433

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有