编程题一道

来源:互联网 发布:淘宝美工工资待遇知乎 编辑:程序博客网 时间: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 摩托罗拉电话静音了怎么办 对讲机话筒坏了怎么办 摩托罗拉xt1570费电怎么办 主板没有rgb接口怎么办 对讲机频段没了怎么办 怀孕查出宫颈囊怎么办 办养殖场没地怎么办 宝宝睡觉衣服湿透怎么办 开衫衣服往下滑怎么办 迷你世界没有牛怎么办 火龙果树烂了怎么办 误喝鸵鸟墨水怎么办 被鸵鸟啄伤怎么办 被鸵鸟啄住怎么办 鸟翅膀受伤了怎么办 北京卖房户口怎么办 深户挂人才市场集体户小孩怎么办? 郑州房子限购怎么办 外地怎么送东西怎么办 晚上登华山下雨怎么办 北京摇不到号想买车怎么办 北京买车摇不到号怎么办 朋友代购贵了怎么办 赢时通把车开走怎么办 杭州房子租不起怎么办 质量效应2吵架怎么办 学生有两个学籍怎么办 孩子出现双学籍怎么办 在外地读书学籍怎么办 上高中没学籍怎么办 电信欠费了网络怎么办 头发里长脓包怎么办 工作总是做不好怎么办 能力差的人该怎么办 洗衣机里有味道怎么办 洗衣机里面有味道怎么办 洗衣机内有味道怎么办 洗衣机总有味道怎么办 上体育课脚扭伤怎么办 教学实践评价表怎么办 初中孩子成绩下降怎么办