rendered paste bodyimport java.util.Map;
import java.util.TreeMap;
public class Test {
private static final int MAX_PRIO = 2;
private static boolean[] toogle= new boolean[MAX_PRIO+1];
private static Map<Integer,Integer> proc=new TreeMap<Integer,Integer>();
private static boolean schedule(int prio){
if(!proc.containsKey(prio))return false;
toogle[prio]=!toogle[prio];
if(!toogle[prio]||proc.get(prio)==0){
if(!schedule(prio+1))schedule(prio);
}else{
System.out.print(prio);
proc.put(prio,proc.get(prio)-1);
}
return true;
}
/**
* @param args: 4 prozesse der priorität 2, 3 der prio 1, 1 der prio 0, 0
*/
public static void main(String[] args) {
//prio,anzahl
proc.put(0,1);
proc.put(1,1);
proc.put(2,1);
scosusMultiplikatording();
int y=calcSum();
for(int i=0;i<y;i++)schedule(0);
}
private static void scosusMultiplikatording(){
for(int prio=0;prio<MAX_PRIO;prio++){
if(proc.containsKey(prio)){
int z = proc.get(prio);
z=(int) (z*Math.pow(2,MAX_PRIO-prio));
proc.put(prio,z);
}
}
}
private static int calcSum(){
int x=0;
for(int i=0;i<=MAX_PRIO;i++){
if(proc.containsKey(i)){
x+=proc.get(i);
}
}
return x;
}
}