Catch That Cow(C语言)

农夫要抓奶牛。 已知N(农夫的位置)K(奶牛的位置)(在一条直线上)。
农夫有三种移动方法(奶牛不会动):

1、向前走一步,耗时一分钟。

2、向后走一步,耗时一分钟。

3、向前移动到当前位置的两倍N*2,耗时一分钟。

求农夫抓到奶牛的最少时间。

广度优先搜索:

int bfs(int n,int k){
	bool s[2*k+1];
	for(int i=0;i<k+1;i++){
		s[i]=false;
	}
	int queue[100][2];
	int head=0,rear=0;
	queue[rear][0]=n;
	queue[rear++][1]=0;
	s[n]=true;
	int count=0;
	while(rear!=head){
		int pos=queue[head][0];
		int count=queue[head++][1];
		if(pos==k){
			return count;
		}else{
			for(int i=0;i<3;++i){
				int temp;
				if(i==0){
					temp=pos+1;
				}else if(i==1){
					temp=pos-1;
				}else{
					temp=pos*2;
				}
				if(!(temp>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值