NYOJ题目889求距离

------------------------------------------

题目可以抽象一下为计算坐标系上两点间的距离,即

AC代码:

 1 import java.awt.Point;
 2 import java.io.BufferedReader;
 3 import java.io.IOException;
 4 import java.io.InputStreamReader;
 5
 6 public class Main {
 7
 8     public static void main(String[] args) throws IOException {
 9
10         BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
11
12         boolean first=true;
13         while(first || reader.ready()){
14             first=false;
15             String s1=reader.readLine();
16             String s2=reader.readLine();
17             double ans=solve(s1,s2);
18             System.out.printf("%.2f\n",ans);
19         }
20     }
21
22     public static double solve(String s1,String s2){
23         Point p1=compile(s1);
24         Point p2=compile(s2);
25         return Math.sqrt(Math.pow(p1.x-p2.x,2)+Math.pow(p1.y-p2.y,2));
26     }
27
28     public static Point compile(String s){
29         char cs[]=s.replaceAll(" ","").toCharArray();
30         Point p=new Point();
31         for(int i=0;i<cs.length;i++){
32             switch(cs[i]){
33             case ‘W‘:
34                 p.x--;
35                 break;
36             case ‘E‘:
37                 p.x++;
38                 break;
39             case ‘S‘:
40                 p.y--;
41                 break;
42             case ‘N‘:
43                 p.y++;
44                 break;
45             }
46         }
47         return p;
48     }
49
50 }

题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=889

时间: 2024-11-06 13:58:08

NYOJ题目889求距离的相关文章

NYOJ题目101两点距离

---------------------------------------- AC代码: 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 Scanner sc=new Scanner(System.in); 8 9 int times=sc.nextInt(); 10 while(times-->0){ 11 double x1=sc.ne

NYOJ 102 次方求模

次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 10481 算法分析: 大数问题,需要利用快速幂取模算法. 所谓的快速幂,实际上是快速幂取模的缩

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

一.第一种写法 package com.pb.demo1; import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加), * a以及累加数的位数是从键盘接收. 程序分析: * 1. 接收从键盘输入的一个数(数字只能是1-9之间的数) * 2. 接收一个数表示累加数的位数 * 3.例如,输入一个4(累加数的位数),键盘输入a的值是5:s=5+55+555

_DataStructure_C_Impl:在图G中求距离顶点v0最短路径为k的所有顶点

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef char VertexType[4]; typedef char InfoPtr; typedef int VRType; #define MaxSize 50 //最大顶点个数 typedef enum{DG,DN,UG,UN}GraphKind; //边结点的类型定义 typedef struct ArcNode{ int adjvex;

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)

题目:求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制.但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度. 通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路.由于已经明确限制for和while的使用,循环已经不能再用了.同样,递归函数也需要用if语句或者条件判断语句来判断是继续

【编程题目】求一个矩阵中最大的二维矩阵(元素和最大)

35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码 早上灭小题! /* 35.(矩阵) 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是: 4 5 5 3 要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码 */ #include <stdio.h>

【编程题目】求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5, 4,3,2}

47.创新工场(算法):求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} 思路:动态规划 从最后一个数字开始,计算以当前数字其实的序列的最长递减子序列. 每次找最长子序列,都扫描它之前求得的子序列中最长,且第一个数字比当前数字小的. 如: 第一个数字 2, 最大长度 1, 下一个数字是 第 7 个 第二个数字 3,  最大长度 2, 下一个数字是 第 7 个 第三个数字 4,  最大长度 3, 下一个数字是 第 6 个 第四个数字 5, 

【编程题目】求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case和条件语句

看到这个问题,第一个反应是真变态啊. 然后,直觉是不能用循环就只能用递归了.可递归怎么跳出来却遇到了麻烦, 我连goto语句都考虑了也没弄好. 后来想到一个非常NC的方法:查找表. 如果n限定一个比较小的范围直接用查找表好了. 但题目的目的肯定不是这样的..... 后来,我转换了一下思路 1+2...+n = (n*n + n)>>1  只要求出n*n来就好了, 但问题是不能用乘法,于是硬件出身的我想到了二进制&,|,>>,<<都是可以用的. 思路:设n = 5

给定数轴上的n个点,求距离最近的两个点的距离

public class MinimumSpacing { //给定平面上的n个点,求距离最近的两个点的距离. //无从下手的话,先分解问题,分解成简单的,逐个分析,然后再合在一起考虑 //这是个2维的数据,那就先降维到1维分析 //先考虑在一条数轴上有n个点,求最近距离的2个点的距离 // // ------*--*------*---*---> //用分治思想处理 // 1.分割 2.处理 3.合并 3个步骤 // // 1.分割: // 将整个数据[先排序]得到数组s,然后将s从中间一份为