ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘]Bucket
    School/Algorithm 2022. 2. 8. 20:44
    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Student20191023 {
    
       static int minerror = 0;
       static int check = 0;
       
       public static void main(String[] args) {
             
            Scanner scan = new Scanner(System.in);
    
            String in = scan.nextLine();
            String [] inputarr = in.split(" ");
    
            int i, j;
            int input = Integer.parseInt(inputarr[0]);
            int bucket = Integer.parseInt(inputarr[1]); 
             
            int[] numbers = new int[input];
             
            for(i = 2, j = 0; i < inputarr.length; i++, j++) {
               numbers[j] = Integer.parseInt(inputarr[i]);
            }
    
            int[] items = new int[input - 1];
            for(i = 0; i < input - 1; i++){
               items[i] = i + 1;
            }    
             
            insertionSort(numbers, numbers.length);
            
            int[] bucketarr = new int[bucket - 1];
            solution(numbers, items, bucketarr, bucket - 1);
            System.out.println(minerror);
    
            scan.close();
          }
       
       public static void insertionSort(int[] A, int n) {
          int i;
          for(i = 1; i < n; i++) {
             int j = 0;
             int m, k;
             for(j = 0; j < i; j++) 
                if(A[j] > A[i])
                   break;
             m = (int) A[i];
             
             for(k = i; k > j; k--) 
                A[k] = A[k-1];
                   
             A[j] = m;
          }
       }
    
       public static void solution(int[] arr, int[] items, int[] bucket, int k){
          if(k == 0){  
             int ret = divide(bucket, arr);
             if(check == 0){
                check++;
                minerror = ret;
             }
             else if(check != 0){
                if(minerror > ret){
                   minerror = ret;
                }
             }
             return;
          }
          
          int lastIndex = bucket.length - k - 1;
          
          for(int i = 0; i < items.length; i++){
             if(bucket.length == k){ 
                bucket[0] = items[i];
                solution(arr, items, bucket, k-1);
             }
             else if(bucket[lastIndex] < items[i]){ 
                bucket[lastIndex + 1] = items[i];
                solution(arr, items, bucket, k - 1);
             }
          }
       }

    'School > Algorithm' 카테고리의 다른 글

    [알고리즘]SYNCHRONZING CLOCK  (0) 2021.11.25
    [알고리즘]Vladimir's Algorithm  (0) 2021.11.08
Designed by Tistory.