Професионална програма
Loading...
Galinagg avatar Galinagg 3 Точки

Kamino Factory - Exercise, Java

Колеги, моля помогнете, къде греша ? Всичко излиза в IntelliJ, но не и в Judge :(((((

Задача 09. Kamino Factory

https://judge.softuni.bg/Contests/Compete/Index/1247#0

Моето решение:

https://pastebin.com/XyY9Nndc

 

Тагове:
0
Fundamentals Module 25/02/2021 13:09:45
Axiomatik avatar Axiomatik 1625 Точки

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] + " ");
                }
            }
        }
 

 

0
25/02/2021 18:00:47