减少复杂算法的编译时间

问题描述 投票:0回答:1

编译(执行)程序需要花费很多时间。在我为竞争性编码处理大型数据集时,在大型编译时间内没有错。有什么方法可以加快我的Java编译时间。我正在使用VS Code在kUbuntu上运行,在我的4个CPU中只有一个显示100%。有没有办法使用更多的资源(也称为硬件),并通过使用其他CPU来加快我们的流程,并且比其他软件给予VS Code更高的优先权。

这里是您需要的代码

import java.util.Scanner;
public class copy_hashcode {

    static int max=0;
    static int limit;
    static int pizza;
    static int abc[];//delete in future
    static int indexing[];
    copy_hashcode obj=new copy_hashcode();
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int max_slices=sc.nextInt();
        limit=max_slices;
        indexing=new int[max_slices];
        //indexing=new int[max_slices];
        int type_of_pizzas=sc.nextInt();
        int arr[]=new int[type_of_pizzas];
        for (int i = 0; i < type_of_pizzas; i++) {
            arr[i]=sc.nextInt();
        }
        printCombination(arr,type_of_pizzas);
        System.out.println(pizza);
        for (int i = 0; i < pizza; i++) {
            System.out.print(indexing[i]+" ");
        }
        sc.close();
    }

    static void printCombination(int arr[], int n_at_a_time) 
    { 
        for (int i = n_at_a_time; i > 0; i--) {
            int r=i;//make combinations taking r at a time
            int data[]=new int[r];
            int store_index[]=new int[r]; 
            combinationUtil(arr, data, 0, n_at_a_time-1, 0, r,store_index);
        }

    } 

    static void combinationUtil(int arr[], int data[], int start, 
                                int end, int index, int r,int store_index[]) 
    { 
        if (index == r) 
        { 
            int sum=0;
            for (int j=0; j<r; j++) {
                sum+=data[j]; 
            }
            if (sum<=limit && sum>=max) {// it all starts here
                pizza=r;
                int abb[]=new int[r];
                for (int i=0;i<r;i++) {
                    abb[i]=data[i];
                }

                for (int i=0;i<r;i++) {//storing index 
                    indexing[i]=store_index[i];

                }
                //indexing=store_index.clone();
                abc=abb;
                max=sum; 
            }
            return; 
        } 

        for (int i=start; i<=end && end-i+1 >= r-index; i++) 
        { 
            data[index] = arr[i];
            store_index[index]=i;
            combinationUtil(arr, data, i+1, end, index+1, r,store_index); 
        } 
    } 


}

这里是输入4500 507 12 12 13 14 28 29 29 30 32 32 41 41 45 46 56 61 61 62 63 65 68 76 77 77 92 93 94 97 103 113 114 114 120 135 145 145 145 149 156 157 160 169 172 179 184 185 189 194 195 195 195195

java linux visual-studio-code terminal cpu
1个回答
0
投票

您可以使用Ant的并行处理功能。检查here以获取文档。

© www.soinside.com 2019 - 2024. All rights reserved.