Kamino Factory - Exercise, Java
Колеги, моля помогнете, къде греша ? Всичко излиза в IntelliJ, но не и в Judge :(((((
Задача 09. Kamino Factory
https://judge.softuni.bg/Contests/Compete/Index/1247#0
Моето решение:
https://pastebin.com/XyY9Nndc
Колеги, моля помогнете, къде греша ? Всичко излиза в IntelliJ, но не и в Judge :(((((
Задача 09. Kamino Factory
https://judge.softuni.bg/Contests/Compete/Index/1247#0
Моето решение:
https://pastebin.com/XyY9Nndc
Don't have access to that competition, but hope that this rewritte works - otherwise there are plenty of working JAVA solutions in the forum with which you can certainly find the last errors (search "Kamino"). Usually, if you have a running code with this exercise, it's the final validations for the best sequence that cause a problem.
Best,
import java.util.Arrays;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int length = Integer.parseInt(scanner.nextLine());
String numbers = scanner.nextLine();
int combinationCount = 0;
int counterCoincidence = 1;
int baseMaxCount = 0;
int baseIndex = 0;
int sumElementsBase = 0;
int baseCombination = 0;
int[] baseArray = new int[length];
while (!numbers.equals("Clone them!")) {
int[] arr = Arrays.stream((numbers).split("!")).mapToInt(e -> Integer.parseInt(e)).toArray();
combinationCount++;
int maxCount = 0;
int index1 = 0;
int sumElements = 0;
int firstIndex = -1;
for (int index = 0; index < arr.length - 1; index++) {
if (arr[index] == arr[index + 1] && arr[index] == 1) {
counterCoincidence++;
if(firstIndex == -1){
firstIndex = index;
}
// for (int i = 0; i <= arr.length - 1; i++) {
// if (arr[i] == 1) {
// sumElements++;
// }
// }
//if (counterCoincidence > maxCount) {
// maxCount = counterCoincidence;
// index1 = index;
//}
}
//else {
// counterCoincidence = 1;
//}
}
for (int i = 0; i <= arr.length - 1; i++) {
if (arr[i] == 1) {
sumElements++;
}
}
// You should select the sequence with the longest subsequence of ones.
if (counterCoincidence > baseMaxCount) {
baseArray = arr;
baseMaxCount = counterCoincidence;
baseIndex = firstIndex;
sumElementsBase = sumElements;
baseCombination = combinationCount;
}
// If there are several sequences with same length of subsequence of ones,
// print the one with the leftmost starting index
if (counterCoincidence == baseMaxCount && firstIndex < baseIndex){
baseArray = arr;
baseMaxCount = counterCoincidence;
baseIndex = firstIndex;
baseCombination = combinationCount;
sumElementsBase = sumElements;
}
// if there are several sequences with same length and starting index,
// select the sequence with the greater sum of its elements
if(counterCoincidence == baseMaxCount && firstIndex == baseIndex && sumElements > sumElementsBase){
baseArray = arr;
baseMaxCount = counterCoincidence;
baseIndex = firstIndex;
baseCombination = combinationCount;
sumElementsBase = sumElements;
}
numbers = scanner.nextLine();
}
System.out.printf("Best DNA sample %d with sum: %d.%n", baseCombination, sumElementsBase);
for (int i = 0; i <= baseArray.length - 1; i++) {
System.out.print(baseArray[i] + " ");
}
}
}