输入描述
第一行为一个数 N,表示路灯个数:1 <= N <= 100000,
第二行为 N 个空格分割的数,表示路灯的照明半径,1 <= 照明半径。
输出描述
无法照明的区间的长度和。
示例演示
示例1
输入:
2
50 50
输出:
0
示例2
输入:
4
50 70 20 70
输出:
20
示例说明: 50+70>100,70+20<100,20+70<100,所以有 两个未要盖的区间,总里程为 10+10=20。
注:这里需要注意照明半径大于100时,需要判断当前灯半径是否大于前一个灯半径-100,如果是大于则将当前灯半径传给下一个灯,如果小于则,将前一个灯半径-100传给下一个灯。
java
package odTest;
import java.util.Arrays;
import java.util.Scanner;
public class lightQuestion {
static int sum = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int[] lightCoverArea = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
judgeUnCover(num,lightCoverArea,lightCoverArea[0],1);
System.out.println(sum);
}
private static void judgeUnCover(int num, int[] lightCoverArea, int preVal,int index) {
// TODO Auto-generated method stub
if(index==num) {
return;
}
if(preVal+lightCoverArea[index]<100) {
// System.out.println(preVal);
sum = sum+100-(preVal+lightCoverArea[index]);
// System.out.println(sum);
}
//判断当前照明半径,传给下一个灯
if(preVal<100&&lightCoverArea[index]<100) {
// System.out.println(1);
preVal=lightCoverArea[index];
}else if(preVal>100&&lightCoverArea[index]+100<preVal) {
preVal=preVal-100;
}else if(preVal>100&&lightCoverArea[index]+100>preVal) {
preVal=lightCoverArea[index];
}else if(preVal<100&&lightCoverArea[index]>100) {
preVal=lightCoverArea[index];
}
judgeUnCover(num,lightCoverArea,preVal,index+1);
}
}