2016-08-02 4 views
-3

자바에서 큐의 우선 순위 큐에있는 n 개의 숫자 중 k 개의 각 가능한 값의 합계를 계산해야하는데 초보 프로그래머이고 그렇지 않습니다. 거기에 루프를 만드는 방법이 아니라면 루프를 생성하는 연산자가 있는지 확인하십시오. 미안, 바보 같은 질문이라면. thxk에서 큐에 루프하는 방법

+4

을 수행해야합니까? –

+0

"java iterate over queue"를 검색하면이를 수행하는 다른 방법을 찾을 수 있습니다. 그것은 당신이 당신의 큐를 구현 한 방법에 달려 있습니다. – scrappedcola

+0

n '정수 또는 복식의 흐름이 대기열에 삽입되고 사용자가 정수 (k')를 보내면 n 중에서 k '를 선택하는 모든 옵션에서 각 가능성의 합계를 계산해야합니다. 대기열 도구를 사용하는 방법을 알고 있지만 이러한 모든 옵션을 전달하는 방법을 볼 수 없습니다. thx –

답변

0

여기에서 n = 7 항목으로 큐를 만듭니다. 내 방법 "findSumOfFirst (int k)"를 살펴보십시오. 이것이 원하는 것이 아니라면 적어도 루프/우선 순위 대기열을 사용하는 것이 좋습니다.

당신이 우선 순위 큐 도움이 필요한 경우 : 당신은 지금까지 무엇을 https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

import java.util.Comparator; 
    import java.util.PriorityQueue; 

    public class QueueReader { 
     static PriorityQueue<Double> queue = new PriorityQueue<>(new Comparator<Double>() { 
      /** 
      * Order the larger double first. 
      * 
      * @param o1 
      *    First double to be compared 
      * @param o2 
      *    Second double to be compared 
      * @return 
      */ 
      @Override 
      public int compare(Double o1, Double o2) { 
       if(o1 > o2) { 
        return -1; 
       } 
       else if (o1 < o2) { 
        return 1; 
       } 
       else { 
        return 0; 
       } 
      } 
     }); 


     public static void main(String[] args) { 
      //Adds 7 doubles 
      queue.add(0.3); 
      queue.add(0.1); 
      queue.add(0.1); 
      queue.add(0.2); 
      queue.add(0.05); 
      queue.add(0.05); 
      queue.add(0.2); 

      int k = 4; 
      int n = queue.size(); 
      double answer = findSumOfFirst(k); 
      System.out.println(answer); 
     } 

     public static double findSumOfFirst(int k) 
     { 
      double sum = 0; 
      for(int i = 0; i < k; i++) 
      { 
       sum += queue.poll(); 
      } 
      return sum; 
     } 

    } 
+0

수학적으로 n!/(k! (n-k)!) 가능성이 있습니다. 이러한 모든 옵션을 전달하는 일반적인 방법을 찾고 있습니다. thx –

+0

위의 예제에서 n = 7이고 k = 4 인 경우 35 개의 옵션이 있으므로 의미가 필요합니다. –

관련 문제