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

用小程序做视频网站h5网站制作平台

用小程序做视频网站,h5网站制作平台,wordpress 微信文章,深圳app开发制作青蛙跳杯子 题目描述 桌子上有n行m列的杯子,每个杯子与相邻杯子之间的距离为1,已知青蛙的跳跃半径为d,青蛙现在在第一行第一列的杯子上,它跳到最后一行最后一列的杯子上,最少需要跳几次? 输入描述 输入…

青蛙跳杯子

题目描述

桌子上有n行m列的杯子,每个杯子与相邻杯子之间的距离为1,已知青蛙的跳跃半径为d,青蛙现在在第一行第一列的杯子上,它跳到最后一行最后一列的杯子上,最少需要跳几次?

输入描述

输入只有一行,分别为整数n, m和实数d。

输出描述

直接输出青蛙跳的最小步数。

输入示例

3 4 1.5

输出示例

3

样例解释

,表示青蛙的一条可能路径,只要再跳3步就行。

,。。。
。,。。
。。,,

c++代码(暴力bfs) 大约O(m * n * d)

#include<bits/stdc++.h>using namespace std;int n, m, ans = INT_MAX;
double d;
vector<vector<int>> dp;class node{
public:int i, j, recoder;
};void bfs() {dp[0][0] = 0;queue<node> q;node k, w;k.i = 0, k.j = 0;q.push(k);while(!q.empty()) {k = q.front(), q.pop();for (int i = 0; i <= (int)(d) && k.i + i < n; i++) {for (int j = 0; j <= (int)(d) && k.j + j < m && i * i + j * j <= d * d; j++) {if (dp[k.i][k.j] + 1 < dp[k.i + i][k.j + j]) {w.i = k.i + i, w.j = k.j + j;dp[w.i][w.j] = dp[k.i][k.j] + 1;q.push(w);}}}}
}int main() {cin >> n >> m >> d;dp = vector<vector<int>>(n, vector<int>(m, INT_MAX));bfs();cout << dp[n - 1][m - 1];return 0;
}

c++代码(贪心法) 大约等于O(min(m, n) * d)

#include<bits/stdc++.h>using namespace std;int n, m, x, y, cont = 0, a, b;
double d, z;int main() {cin >> n >> m >> d;a = 0, b = 0;while(a != n - 1 || b != m - 1) {z = DBL_MAX;for (int i = 0; i <= (int)(d) && a + i < n; i++) {for (int j = 0; j <= (int)(d) && b + j < m && i * i + j * j <= d * d; j++) {int delta = (n - 1 - (a + i)) * (n - 1 - (a + i)) + (m - 1 - (b + j)) * (m - 1 - (b + j));if (delta < z) z = delta, x = a + i, y = b + j;}}a = x, b = y;cont++;}cout << cont;return 0;
}//by wqs

题目解析

暴力法

暴力法的思路很简单,我们定义dp[i][j]表示从(0, 0)到(i, j)最少需要多少步
从队列取出dp[i][j]
遍历dp[i ~ i + int(d)][j ~ j + int[d]]如果两点距离小于d则更新
dp[i ~ i + int(d)][j ~ j + int[d]] = min(dp[i ~ i + int(d)][j ~ j + int[d]], dp[i][j] + 1);
然后把dp[i ~ i + int(d)][j ~ j + int[d]]加入队列,
循环这个步骤就行。

贪心法

贪心法的思路是我们没必要将所有状态加入队列。
我们只需要把与终点直线距离最小的那个点加入就行了。
怎么证明我不会,自己去搜搜吧。
事实上,有一种情况是有2个点同时距离终点最小。
因为这些坐标都是整数,所以这两个状态是对称的你只要选择其中一个就好了。
也因为这些坐标都是整数,实际上不可能会出现3个点或者更多点了。
因为每次只加入一个点,所以干脆可以把队列改成循环了。循环末尾改变下状态就行。
http://www.dtcms.com/wzjs/499695.html

相关文章:

  • 建设银行申请信用卡网站首页无锡营销型网站制作
  • 超市网站建设方案宁波seo推广方式排名
  • 网站没有robots.txt文件网站源码交易平台
  • 火车票b2c网站建设qq刷赞网站推广快速
  • php网站本地搭建青岛的seo服务公司
  • 注册广告公司名字网站排名seo教程
  • 建站之星(sitestar)网站建设系统企业网络营销推广案例
  • 渭南网站建设风尚网络seo专员是什么意思
  • 网站自助平台5118网站如何使用免费版
  • 企业网站建设规划书百度seo优化技术
  • 网站上人家做的简历刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 做网站需要资料郑州网络推广软件
  • 网站如何做百度权重查关键词的排名工具
  • 网站权重高+做别的关键词网络营销与推广
  • 做速卖通代码的网站企业推广语
  • 网站制作基础教程百度小说搜索排行榜
  • 厦门网站建设xm37今天新闻
  • 海外 网站 推广软件开发外包
  • 济南市做网站公司淘宝怎么提高关键词搜索排名
  • 网站做seo屏蔽搜索引擎网络运营是做什么的
  • 网站加载速度慢的原因seo专业培训需要多久
  • 闲鱼上做网站百度电话号码查询
  • 婚介 东莞网站建设seo查询官网
  • 网站后端怎么做seo整站优化更能准确获得客户
  • 太原推广型网站建设企业网站推广的形式有哪些
  • 定制app开发平台贵港seo关键词整站优化
  • 网站做web成人电脑培训班办公软件
  • 网站推广意义自媒体平台
  • 妈妈我想你高清免费视频播放关键词排名优化营销推广
  • 网站建设亿玛酷信赖新闻最近的新闻