Frogger

Description

Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sunscreen, he wants to avoid swimming and instead reach her by jumping. 
Unfortunately Fiona's stone is out of his jump range. Therefore Freddy considers to use other stones as intermediate stops and reach her by a sequence of several small jumps. 
To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence. 
The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones. 

You are given the coordinates of Freddy's stone, Fiona's stone and all other stones in the lake. Your job is to compute the frog distance between Freddy's and Fiona's stone. 

Input

The input will contain one or more test cases. The first line of each test case will contain the number of stones n (2<=n<=200). The next n lines each contain two integers xi,yi (0 <= xi,yi <= 1000) representing the coordinates of stone #i. Stone #1 is Freddy's stone, stone #2 is Fiona's stone, the other n-2 stones are unoccupied. There's a blank line following each test case. Input is terminated by a value of zero (0) for n.

Output

For each test case, print a line saying "Scenario #x" and a line saying "Frog Distance = y" where x is replaced by the test case number (they are numbered from 1) and y is replaced by the appropriate real number, printed to three decimals. Put a blank line after each test case, even after the last one.

Sample Input

2

0 0

3 4


3

17 4

19 4

18 5

Sample Output

Scenario #1

Frog Distance = 5.000


Scenario #2

Frog Distance = 1.414


Source




题目大意:定义“青蛙距离”为Freddy跳到Fiona那里所需要的若干次跳跃中最长的那一次。第一行有一个整数n(2<=n<=200),表示湖中一共有多少块石头。接下来的n行,每一行有两个整数xi,yi(0 <= xi,yi <= 1000),表示第i块石头的坐标。第1块石头的坐标是Freddy所在的位置,第二块石头的坐标是Fiona所在的位置,其他的石头上都没有青蛙。求青蛙距离。


#include<stdio.h>
#include<limits.h>
#include<math.h>
double firstjump[205];
double map[205][205];
int check[205];											//用于标记第i块石头是否被访问 
int x[205],y[205],n;
double max,min;
void sove()
{
	firstjump[0]=0;
	check[0]=1;
	int begin=0;
	while(begin!=1)
	{
        min=INT_MAX;
        for(int i=0;i<n;i++)
        if(!check[i]&&firstjump[i]<min)
        {
             min=firstjump[i];
             begin=i;										//记录第一次跳跃后青蛙所在位置 
        }
        if(min>max)  
		max=min;
        for(int i=0;i<n;i++)
        {
            if(!check[i]&&map[begin][i]<INT_MAX&&firstjump[i]>map[begin][i])
            firstjump[i]=map[begin][i];
            check[begin]=1;
        }	
	}
}
int main()
{
	int cas=0;
	while(scanf("%d",&n),n!=0)
	{
		cas++;
		max=INT_MIN;
		for(int i=0;i<n;i++)
		scanf("%d %d",&x[i],&y[i]);
		for(int i=0;i<n;i++)						// 初始化第i块跳到第j块的距离 
		for(int j=0;j<n;j++)
		{
			map[i][j]=INT_MAX;
		}
        for(int i=0;i<n;i++)						//计算第i块跳到第j块的距离 
        for(int j=0;j<n;j++)
        {
           map[i][j]=sqrt((1.0*x[i]-1.0*x[j])*(1.0*x[i]-1.0*x[j])+(1.0*y[i]-1.0*y[j])*(1.0*y[i]-1.0*y[j]));		
        }
        for(int i=0;i<n;i++)						//第一次跳跃的最短距离 
        {
        	firstjump[i]=map[0][i];
        	check[i]=0;
        }
        sove();
        printf("Scenario #%d\n",cas);
        printf("Frog Distance = %.3f\n",max);
        printf("\n");
	}
	return 0;
}



### 使用 JavaFX 开发 Frogger 游戏 #### 创建项目结构 为了构建一个基于 JavaFX 的 Frogger 游戏,首先需要设置好项目的框架。这通常涉及到创建必要的类文件以及资源文件夹来存储图像和其他媒体。 ```java public class MainApp extends Application { @Override public void start(Stage primaryStage) throws Exception{ Group root = new Group(); Scene scene = new Scene(root, 800, 600); // 初始化游戏逻辑组件... primaryStage.setTitle("Frogger Game"); primaryStage.setScene(scene); primaryStage.show(); } } ``` 此代码片段展示了 `MainApp` 类作为应用程序入口点的作用[^1]。 #### 设计游戏界面布局 通过定义场景中的图形对象及其位置关系可以实现游戏画面的设计。对于 Frogger 来说,主要元素包括青蛙角色、车辆流和河流障碍物等。 ```xml <!-- 假设使用 FXML 文件 --> <AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> <!-- 定义背景图片 --> <ImageView fitWidth="800" fitHeight="600"> <image> <Image url="@background.png"/> </image> </ImageView> </AnchorPane> ``` 上述 XML 片段用于描述 UI 组件的位置与外观属性[^2]. #### 实现基本的游戏机制 核心部分在于编写控制玩家输入响应、碰撞检测等功能的方法。下面是一个简单的例子展示如何处理键盘事件: ```java scene.setOnKeyPressed(event -> { switch (event.getCode()) { case UP: frog.moveUp(); break; case DOWN: frog.moveDown(); break; case LEFT: frog.moveLeft(); break; case RIGHT: frog.moveRight(); break; } }); ``` 这段代码实现了方向键操作下的青蛙移动功能[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值