编程题一道
来源:互联网 发布:淘宝美工工资待遇知乎 编辑:程序博客网 时间:2024/06/10 18:06
2017.04.26
摸金校尉通过激光防范到达指定位置:
package stackAndQueue;import java.util.Scanner;class Point{int x;int y;Point(int x, int y){this.x = x;this.y = y;}}class Line{Point start;Point end;Line(Point start, Point end){this.start = start;this.end = end;}}public class Main {public static void main(String[] args) {//读取目标行列数Scanner sc = new Scanner(System.in);int m,n;int count = 0;m = sc.nextInt();n = sc.nextInt();//读取激光数据Scanner sc1 = new Scanner(System.in);String info = sc1.nextLine();String[] points_pos = info.split(" ");int[] positions = new int[points_pos.length];for(int i=0;i<points_pos.length;i++){positions[i] = Integer.parseInt(points_pos[i]);}count = positions[0];int num = 1;Line[] lines = new Line[count];for(int i=0;i<count;i++){Point start = new Point(positions[num++],positions[num++]);Point end = new Point(positions[num++],positions[num++]);Line line = new Line(start, end);lines[i] = line;}//如果连接交叉线段,记录上下左右四个方位的最大值,如果上下到顶或者左右到顶即不可到达for(int i=0;i<lines.length;i++){int max_x = lines[i].start.x>lines[i].end.x?lines[i].start.x:lines[i].end.x;int min_x = lines[i].start.x<lines[i].end.x?lines[i].start.x:lines[i].end.x;int max_y = lines[i].start.y>lines[i].end.y?lines[i].start.y:lines[i].end.y;int min_y = lines[i].start.y<lines[i].end.y?lines[i].start.y:lines[i].end.y;;Line line1 = lines[i];for(int j=0;j<lines.length;j++){Line line2 = lines[j];boolean flag = false;int d = (line1.end.x - line1.start.x)*(line2.end.y-line2.start.y)-(line1.end.y-line1.start.y)*(line2.end.x-line2.start.x);if(d!=0){double r = (line1.start.y-line2.start.y)*(line2.end.x-line2.start.x)-(line1.start.x-line2.start.x)*(line2.end.y-line2.start.y)/(double)d;double s = (line1.start.y-line2.start.y)*(line1.end.x-line1.start.x)-(line1.start.x-line2.start.x)*(line1.end.y-line1.start.y)/(double)d;if(r>=0 && r<=1 && s>=0 && s<=1){flag = true;}}//线段相交,进行极值更新if(flag==true){int max_x1 = lines[j].start.x>lines[j].end.x?lines[j].start.x:lines[j].end.x;int min_x1 = lines[j].start.x<lines[j].end.x?lines[j].start.x:lines[j].end.x;int max_y1 = lines[j].start.y>lines[j].end.y?lines[j].start.y:lines[j].end.y;int min_y1 = lines[j].start.y<lines[j].end.y?lines[j].start.y:lines[j].end.y;max_x = max_x>max_x1?max_x:max_x1;min_x = min_x<min_x1?min_x:min_x1;max_y = max_y>max_y1?max_y:max_y1;min_y = min_y<min_y1?min_y:min_y1;if(max_x>m || min_x<0 || min_y<0 || max_y>n){System.out.println('0');return;}}}}System.out.println('1');}}
0 0
- 一道编程题
- 一道编程题
- 一道编程题
- 一道有道编程题
- 一道编程题
- 笔试编程题一道
- 一道华为编程题
- 一道编程题
- 一道编程题
- thoughtworksd一道编程题
- 一道编程题
- 编程题一道
- 字符串编程题一道
- 一道编程题
- 一道迅雷编程题题
- 一道很小的编程题
- 一道printf的编程题
- 一道JAVA笔试编程题
- 总结java中的反射机制
- vue事件简写方式
- sqlite3编程实例
- 4.26
- ADO.NET入门教程(一) 初识ADO.NET
- 编程题一道
- PAT-A-1044. Shopping in Mars (25)
- centos6.5 部署redmine-3.3.3+nginx
- UEFI 下 Windows 10 安装 Ubuntu 双系统(亲测有效)
- Java集合之TreeSet
- windows7系统中VMware下实现only-host上网
- Vue1.0版本--TodoList
- BZOJ 1529: [POI2005]ska Piggy banks 并查集
- OSI模型与TCP/IP协议体系结构