小明每天都要练功,练功中的重要一项是梅花桩。

  小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1。

  小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上。小明已经练了一段时间,他现在可以一步移动不超过 d 的距离(直线距离)。

  小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。

输入格式

  输入的第一行包含两个整数 n, m,分别表示梅花桩的行数和列数。

  第二行包含一个实数 d(最多包含一位小数),表示小明一步可以移动的距离。

输出格式

  输出一个整数,表示小明最少多少步可以到达目标。

样例输入

3 4

1.5

样例输出

3

10评测用例规模与约定

  对于 30% 的评测用例,2 <= n, m <= 20,1 <= d <= 20。

  对于 60% 的评测用例,2 <= n, m <= 100,1 <= d <= 100。

  对于所有评测用例,2 <= n, m <= 1000,1 <= d <= 100。

PS:

这里的搜索肯定是找半径搜索,肯定是半径搜索的最右下面的,

下面那个图,看一下,我的y2是最靠下的位置,x2++,如果超出了半径范围,

那么y2就往上走,x2++的范围继续搜索,如果没有超过半径范围,x2++就继续向右面找

然后在超过半径,就y2–往上走,知道y2<y1,

因为他是右下走,所以你只需要考虑右下方向的路径

不好意思,实在是不清楚怎么把他转过来

package 蓝桥杯省模拟赛_高职组;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class 梅花桩 {
public static void main(String[] args) {
List<Integer> list_y = new ArrayList<Integer>();
List<Integer> list_x = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
double d = sc.nextDouble();
sc.close();
int[][] map = new int[n+1][m+1];
list_x.add(1);
list_y.add(1);
while (list_x.size()!=0){
int x1 =list_x.remove(0);
int y1=list_y.remove(0);
int x2=x1;
int y2=y1+(int)d;
if((n-x1)*(n-x1) + (m-y1)*(m-y1) <= d*d)
{
map[n][m] = map[x1][y1] + 1;
break;
}
while (x2 <= n && y2 >= y1 && y2 <= m){
if((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) <= d * d && map[x2][y2] == 0)
{
list_x.add(x2);
list_y.add(y2);
map[x2][y2] = map[x1][y1] + 1;
x2 ++;
}
else y2 --;
}
}
System.out.println(map[n][m]);
}
}

Java 第十一届 蓝桥杯 省模拟赛 梅花桩的更多相关文章

  1. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  2. Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量

    给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母. 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母. 输入格式 输入一行,包含一个单词,单词中只包含小写英文字母. 输 ...

  3. Java 第十一届 蓝桥杯 省模拟赛 递增序列

    问题描述 在数列 a[1], a[2], -, a[n] 中,如果 a[i] < a[i+1] < a[i+2] < - < a[j],则称 a[i] 至 a[j] 为一段递增 ...

  4. Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离

    在数列 a_1, a_2, -, a_n中,定义两个元素 a_i 和 a_j 的距离为 |i-j|+|a_i-a_j|,即元素下标的距离加上元素值的差的绝对值,其中 |x| 表示 x 的绝对值. 给定 ...

  5. Java 第十一届 蓝桥杯 省模拟赛 洁净数

    洁净数 小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数.如果一个数的数位不包含数字 2,小明将它称为洁净数. 请问在整数 1 至 n 中,洁净数有多少个? 输入格式 输入的第一行包含一个整数 ...

  6. Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树

    一棵10层的二叉树,最多包含多少个结点? 注意当一棵二叉树只有一个结点时为一层. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...

  7. Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数

    问题描述 70044与113148的最大公约数是多少? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...

  8. Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数

    问题描述 不超过19000的正整数中,与19000互质的数的个数是多少? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将 ...

  9. Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制

    问题描述 请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这 ...

随机推荐

  1. Jekyll 解决Jekyll server本地预览文章not found的问题

    layout: post tags: [Jekyll] comments: true 执行Jekyll本地浏览器预览指令 bundle exec jekyll serve 进入浏览器输入127.0.0 ...

  2. STM32 ADC多通道规则采样和注入采样

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...

  3. 数组的操作。1,JS数组去重。2,把数组中存在的某个值,全部找出来。3在JS数组指定位置插入元素。。。

    1,数组去重 let arr = [1,2,3,4,5,6,1,2,3,'a','b','a']; let temp = []; // 作为存储新数组使用 for(let i = 0; i < ...

  4. 去除 HTML 和 PHP 标记

    strip_tags()函数,从字符串中去除html和php标记,随笔记一下,如果看过就过去,下次再找可能又会费点事,记下来下次好找

  5. zsy后台管理系统-架构设计

    Zsy框架总体架构设计 1.Mysql数据库,存储所有表的数据. 2.Zsy-基础项目(Zsy-Model,Zsy-Dao,Zsy-Service,Zsy-Web),基于SSM框架.项目功能包含基本的 ...

  6. 01.drf文档及外键字段反序列化

    一 安装drf 1.1 安装库 pip install djangorestframework pip install markdown # Markdown support for the brow ...

  7. JavaScript事件坐标区别(offset,client,page)

    学习笔记. 1. offset:其定位原点是当前元素左上角 2. client:其定位原点是当前窗口左上角 3. page:其定位原点是当前页面左上角 下面来验证一下. 先上代码: <!doct ...

  8. poj 2296

    Map Labeler Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2047   Accepted: 682 Descri ...

  9. Gym101630L Laminar Family

    题目链接:https://cn.vjudge.net/problem/Gym-101630L 题目大意: 对于一个集合的集合,若其中任意两个集合 \(A\) 和 \(B\) 都满足下述三个条件之一:\ ...

  10. 【新手引导】MAC如何允许安装任何来源的软件(安装第三方软件/应用)

    1 打开系统偏好设置,找到安全性与隐私(第一行第六个) 2 进入安全性与隐私,点击左下角一个锁的按钮,输入自己电脑密码,允许从以下位置下载的应用: 新电脑应该是两个选项 1.APP store 2.A ...