风险人群筛查
package practice;
import java.util.Arrays;
import java.util.Scanner;
public class practice2 {
public static void main(String[] args ) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();//得到人数
int n = sc.nextInt();//得到连续数
int place = sc.nextInt();//得到时刻的个数
int xl = sc.nextInt();
int yd = sc.nextInt();
int xr = sc.nextInt();
int yr = sc.nextInt();//得到风险区域
int passby = 0;//记录经过的人
int stayby = 0;//记录逗留的人
String str = "";//来存储每一个人经过风险区域的坐标判断
String nt = "";//用来存储连续性
for (int i = 0; i < n; i++) {//连续数
nt +=1;
}
for (int i = 0; i < m; i++) {//将每一个人的坐标数进行存储,显示成的字符串,然后对字符串进行操作来判断连续性
str = "";
for (int j = 0; j < place; j++) {
int x =sc.nextInt();
int y =sc.nextInt();
if (x>=xl&&x<=xr&&y>=yd&&y<=yr) {
str += 1;
}else {
str += 0;
}
}
if (str.indexOf(nt) !=-1) {//判断连续性
stayby++;
}
if (str.indexOf("1")!=-1) {//判断是否存在
passby++;
}
}
System.out.print(passby+"\n");
System.out.print(stayby);
}
}
总结
步骤:设置两个空字符串,一个用来存储需要连续出现的在指定区域的坐标数,也就是这个算法中连续出现的一的个数,另一个字符串用来存储每个人的每个时刻是否在风险区域内,若是,则将其加一的后缀,将每一个输出进来的坐标进行判断,若在指定的高风险地区,则坐标字符串加一,不在,则指定字符串加0,每一个判断出来后,用字符串的操作来判断连续性即可。
得到的经验————————用字符串来代替数组的存储,(若相同数判断连续的时候,十分的方便)。