真的崩溃了怎么改啊一直过不了
查看原帖
真的崩溃了怎么改啊一直过不了
1105581
KEYKB楼主2023/11/15 16:48
import java.lang.Math;
import java.util.Scanner;

public class Main {
    static int round(double i) {
        if(i>0.0) return (int)(i+0.5);
        else return (int)(i-0.5);
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt(),k=scan.nextInt();
        double[][] s=new  double[1000][2],a=new double[30][30];
        double[] pan=new double[k];

        for(int i=0;i<n;i++)//输入个人的得分
        {s[i][0]=scan.nextInt();
            s[i][1]=scan.next().charAt(0);
        }

        for(int i=0;i<k;i++)//输入实践得分
        {for(int j=0;j<k;j++)
        {int c=scan.nextInt();
            pan[j]+=a[j][i]=c;}
        }

        for(int i=0;i<k;i++)//计算平均数
            pan[i]/=k;

        for(int i=0;i<k;i++)
        { double prem=0,count=0;
            for(int j=0;j<k;j++)//算出在平均值15左右的数
                if(Math.abs(a[i][j]-pan[i])<=15.0) {count++;prem+=a[i][j];}
            if(count!=0) prem/=count;
            for(int c=0;c<n;c++)//算分
            {
                if(s[c][1]==65+i)
                {double p=s[c][0]*0.6,b=prem*0.4;
                    s[c][0]=round(p+b);}}
        }

        //sort();
        for(int i=0;i<n-1;i++)//排序
        {int c=i;
            for(int j=i+1;j<n;j++)
                if(s[c][0]<s[j][0]) c=j;
            if(c!=i)
            {double h;
                h=s[c][0];s[c][0]=s[i][0];s[i][0]=h;
                if(s[c][1]!=s[i][1])
                {h=s[c][1];s[c][1]=s[i][1];s[i][1]=h;}
            }}

            for(int j=0;j<n;j++)//输出数据
                System.out.println((int)s[j][0]+" "+(char)s[j][1]);
}
}

2023/11/15 16:48
加载中...