模拟-铺地毯
程序员文章站
2023-12-27 15:51:52
...
题目:题目来源
反思:这里用到了一个正难则反的思想,如果顺序的思维解决不了问题,我们可以试试逆着来。
附上一句歌词以此来表达我的心情:“我想要怒放的生命”。
话不多说,代码如下:
/*
* 日期:2020.02.24
* 作者:城主
* 题目:洛古普及题-铺地毯
* 思路:写一个关于地毯的类,包括它的左下角坐标,
* 及x轴和y轴的长度,可以写一个类的函数,
* 用来辨别所要验证的点是否在地毯内,判断
* 该点的最上面的地毯可用正难则反的思想,
* 从最上面的地毯来判断,依次往下。
*/
import java.util.Scanner;
//地毯类
class floor
{
public int x;
public int y;
public int length;//x轴的长
public int hight;//y轴的长
public Boolean judge(int x_t,int y_t)
{
if(x<=x_t&&x_t<=(x+length))
{
if(y<=y_t&&y_t<=(y+hight))return true;
else
return false;
}
else
return false;
}
}
public class Test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
//input the sum of floor
int num=scan.nextInt();
floor array[]=new floor[num];
//input floor
for(int i=0;i<num;i++)
{
array[i]=new floor();
array[i].x=scan.nextInt();
array[i].y=scan.nextInt();
array[i].length=scan.nextInt();
array[i].hight=scan.nextInt();
}
//input point
int x_test=scan.nextInt();
int y_test=scan.nextInt();
//deal with
int temp=0;//label the number
int test=0;//label the result
for(int i=num-1;i>=0;i--)
{
if(array[i].judge(x_test, y_test)==true)
{
temp=i;
test=1;
break;
}
}
if(test==1)System.out.println(temp+1);
else System.out.println(-1);
}
}