Как я выбираю места для уменьшения в переменной int? (В методе calculateminimuncameras
Привет, это снова я, думаю, что теперь я усвоил урок.
Мне нужен подход к этой проблеме на java.
Мы охранная компания и должны следить за зданием. Здание имеет форму правильного многоугольника, и в зависимости от количества камер, которые у нас есть, и поведения этих камер эта программа должна вычесть минимальное количество камер, чтобы покрыть все стены многоугольника.
Каждая из камер содержит два целых числа ai и bi, которые определяют количество стен, которые покрывают.
-если AI &ЛТ; Би то камера охватывает поскольку стена компа до стены би, который (Ай &ЛТ;= Дж &л;= би), то J = стенках крышки.
-если AI &ГТ; Би то камера охватывает поскольку стена компа до стены Н или крышки после падения Берлинской стены, 1 до стены би; это (Ма &ЛТ;= Дж &Л;= П), или (1 &ЛТ;= Дж &л;=би); к = стенках крышки.
Входные параметры таковы:
-n: количество стенок, и (3 <= n<= 10^6).
-k: количество камер, и (1 <= k <= 10^6)
- ai, bi для каждой камеры и (1 <= ai && bi <= n)
Процесс:
.
.
.
Выходные параметры таковы:
-минимальное количество камер.
Пример 1:
вход:
8 2
8 4
5 8
выход:
2
Пример 2:
вход:
100 7
1 50
50 70
70 100
90 40
20 60
60 80
80 20
выход:
3
В коде, который я только что создал для своей задачи, мой вопрос звучит так : ¿как мне выбрать места для уменьшения целых чисел в атрибутивных стенах... когда параметры равны (ai < bi).
Что я уже пробовал:
import java.util.Scanner; import java.util.ArrayList; public class Integer { private ArrayList <int[]> integers = new ArrayList <int[]>(); private int walls; private int cameras; public int numberWalls() { Scanner read = new Scanner (System.in); System.out.println("¿How many walls do you want in the building?"); this.walls = read.nextInt(); return this.walls; } public int numberCameras() { Scanner read = new Scanner (System.in); System.out.println("¿How many cameras do you want monitoring the building?"); this.cameras = read.nextInt(); return this.cameras; } public void generateIntegers (int cameras) { Scanner read = new Scanner (System.in); for (int i = 0; i < cameras; i++) { int j = i+1; System.out.println ("Introduces the pair "+j); System.out.println("First introduces the 'ai' parameter"); int ai = read.nextInt(); System.out.println("Second introduces the 'bi' parameter"); int bi = read.nextInt(); int[] pair = {ai, bi}; this.integers.add(i,pair); } } public int getCameras () { return this.cameras; } public int getWalls () { return this.walls; } public ArrayList <int []> getPairs (){ return this.integers; } public void CalculateMinimunCameras(int walls, ArrayList <int[]> pairs, int cameras) { for (int i = 0; i < cameras ; i++) { int [] pair = pairs.get(i); // here is my dude, I need to remove a part of the number of walls but I need to selects this part too if (pair[0] < pair[1]) { walls = walls -(pair[1]-pair[2]); } } } }