日期:2014-05-20  浏览次数:20678 次

用JAVA怎样实现这个算法?
有四道题,他们的分值的比重为 2:3:3:2
把2分 分给他们应如何分(必须是整数),以此类推
把3分、4分......n分 按照这个比例分成四分,但是每份分到的都为整数,应该如何实现?
注:总分可以不用分完,但是越接近分完越好。

------解决方案--------------------

新手来试试写写主要思路...

首先知道权重大小后,将同样大的放一组,标号(权重多少就多少。例如权重3,有4个,

则T[3][0]=,T[3][1]=....etc)
如例子:则
private int marks=5;
private int weight1=2,weight4=2,weight2=3,weight3=3;
private int Q[]={weight1,weight2,weight3,weight4};
private int T[][];
private int getWeight(int Q[]){
    int weight=0;
    for(i=0;i<Q.length;i++){
        while(true){
            int j=0;
            if(T[Q[i]][j]==null){
                T[Q[i]][j]=i;
                break;
            }else{
                j++;
            }
            weight+=Q[i];
        }
    }
    return weight;
}
如此,题目号被对应的权重记录下来,并返回总权重


然后知道分值总数,得到总权重,然后用分值总分/总权重,向下取整。
private int averageWeight(int weight){
    return marks/weight;
}

然后if(T[][]!=null),则mark[T[][]]=averageWeight(getWeight(Q[]);。
就不写了 ....