我需要在java中计算队列或优先级队列中n个数字中k个数的每种可能性的总和。
答案 0 :(得分: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;
}
}