当前位置: 首页 > news >正文

网站建设的几种形式wordpress如何应用插件下载失败

网站建设的几种形式,wordpress如何应用插件下载失败,如何用腾讯云做网站,网络营销与直播电商专业专升本目录 题目描述 解析 解题思路 代码部分 代码部分 运行结果 看看len数组中各个位置的标记值 为什么这样做一定是最短路径&#xff1a; 题目描述 农夫知道一头牛的位置&#xff0c;想要抓住它。农夫和牛都位于数轴上&#xff0c;农夫起始位于点N(0<N<100000)&…

目录

题目描述

解析

解题思路

代码部分

代码部分

运行结果

看看len数组中各个位置的标记值

为什么这样做一定是最短路径:


题目描述

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1.从X移动到X-1或X+1,每次移动花费一分钟
2.从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。

农夫最少要花多少时间才能抓住牛?

输入
两个整数,N和K。
输出
一个整数,农夫抓到牛所要花费的最小分钟数。

样例输入:

5 17

样例输出:

4

解析

 使用队列:

 

 

解题思路

使用队列从队尾依次传入值;判断队首值是否为所需值。

使用数组对每次将要传入的值做标记。从来没有传入过的值都标记为-1,传入且符合条件的,在上一次符合条件的标记值基础上加1。最终输出牛所在位置的标记值,即为运行了多少次。

代码部分

代码部分

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 1e5;
int len[N];//用于标记的数组定义
int main()
{int n, k;cin >> n >> k;memset(len, -1, sizeof(len));//用于标记的数组初始化//-1:从未进入过队列;  非-1:既表示进入了队列,又表示最短路径中,已经走了第几步。queue<int>q;q.push(n);len[n] = 0;//农夫所在的第一个位置,标记为最短路径中的第0步int x;//记录队首值(为了书写方便)int y[3];//从一个位置可能延伸出的3个子位置while (!q.empty()){x = q.front();if (x == k)break;//如果检索到牛的位置,停止循环q.pop();//如果不是牛的位置,弹出队首元素y[0] = x - 1;y[1] = x + 1;y[2] = 2 * x;for(int i=0;i<3;i++)if (y[i] >= 0 && y[i] < N && len[y[i]] == -1)//判断条件:如果该位置在数组界线内且从来没有进入过队列{q.push(y[i]);//让它进入队列len[y[i]] = len[x] + 1;//又走了一步;}}cout << len[k] << endl;return 0;
}

运行结果

 

看看len数组中各个位置的标记值

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 1e5;
int len[N];//用于标记的数组定义
int main()
{int n, k;cin >> n >> k;memset(len, -1, sizeof(len));//用于标记的数组初始化//-1:从未进入过队列;  非-1:既表示进入了队列,又表示最短路径中,已经走了第几步。queue<int>q;q.push(n);len[n] = 0;//农夫所在的第一个位置,标记为最短路径中的第0步int x;//记录队首值(为了书写方便)int y[3];//从一个位置可能延伸出的3个子位置while (!q.empty()){x = q.front();if (x == k)break;//如果检索到牛的位置,停止循环q.pop();//如果不是牛的位置,弹出队首元素y[0] = x - 1;y[1] = x + 1;y[2] = 2 * x;for(int i=0;i<3;i++)if (y[i] >= 0 && y[i] < N && len[y[i]] == -1)//判断条件:如果该位置在数组界线内且从来没有进入过队列{q.push(y[i]);//让它进入队列len[y[i]] = len[x] + 1;//又走了一步;}}cout << len[k] << endl;//查看:for (int i = 0; i <= k; i++)cout << i << ":" << len[i] << endl;return 0;
}

 运行结果:

 len数组中元素的实际含义:

踩到这个位置上时,这是某条路径的第len[ i ]步

为什么这样做一定是最短路径:

关键词:广度搜索、优先输出。

将最短路径的问题转化为最先输出队列的问题。

 

 

http://www.yayakq.cn/news/670031/

相关文章:

  • 北京网站推广网站开发三端指哪三端
  • 国外网站专题红黄广州网站排名推广
  • 创业网站模板免费下载网站英文域名是什么
  • 中文网站欣赏wordpress调用文章发布时间
  • 国外网站开发安溪网站建设
  • 政务建设网站得必要性有哪些做的好看的网站
  • ui中国设计网站页面gcp 搭建 wordpress
  • 广州小程序开发鄂州百度seo技术厂家
  • 网站开发及app开发报价单购买了域名之后怎么做网站
  • 成都广告设计公司电话站长工具seo综合查询下载
  • 房产门户网站平台搭建微信分销系统有哪些平台
  • asp.net网站制作教程有什么免费推广软件
  • 农村建设集团有限公司网站首页江苏工程招标网
  • 湛江模板建站平台网站备案成功然后怎么做
  • 网站建设推广书籍中国建设银行新余分行网站
  • 做国际网站多少钱企业网站开发与设计
  • 软件工程 旅游网站开发er图百度风云搜索榜
  • 34线城市做网站推广wordpress模板网
  • 网站地址大全镇江峻程网络科技有限公司
  • 东莞高端品牌网站建设做网站好的公司有哪些
  • 凡科网站建设教学视频濮阳公司建站
  • 北京专业企业营销网站建设网站建站模版
  • 可以做微课PPT模板 网站在线html制作网页
  • 无锡怎么做网站推广福田深圳网站建设
  • 首次做淘宝客网站要安装程序吗近期新闻热点
  • 长沙铭万做网站wordpress语音搜索
  • 生鲜网站建设背景该如何选择深圳网站建设公司
  • 陕西省建设监理协会网站证件查询麻辣烫配方教授网站怎么做
  • 做外链网站做数据库与网站招什么人
  • app建设网站福步外贸论坛app官网