首页 > 编程语言 >JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛

JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛

时间:2024-03-12 19:55:05浏览次数:22  
标签:赛道 匹马 int System ---------------------------------------------------------------

JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛

  • 随机数模拟25匹马匹速度
import java.lang.reflect.Array;
import java.util.Arrays;

public class Ma {
    public static void main(String[] args) {
        double[] a1[] = new double[5][5];
        double[] a2[] = new double[5][3];
        double[] a3[] = new double[5][3];
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("25匹随机马的速度");
        for (int i = 0; i < a1.length; i++) {
            for (int i1 = 0; i1 < a1[i].length; i1++) {
                a1[i][i1] = Math.random() * 100;
                System.out.print(a1[i][i1] + "\t\t");
            }
            System.out.println();
        }
        for (int i = 0; i < a1.length; i++) {

            Arrays.sort(a1[i]);

        }
        double m;
        for (int i = 0; i < a2.length; i++) {
            for (int i1 = 0; i1 < a2[i].length; i1++) {
                m = a1[i][a1[i].length - 1 - i1];
                a2[i][i1] = m;

            }

        }
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("五次比赛后25匹随机马的速度排列");
        for (int i = 0; i < a1.length; i++) {
            for (int i1 = 0; i1 < a1[i].length; i1++) {

                System.out.print(a1[i][i1] + "\t\t");
            }
            System.out.println();
        }
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("取五次比赛后25匹随机马的速度排列的前三名");
        for (int i = 0; i < a2.length; i++) {
            for (int i1 = 0; i1 < a2[i].length; i1++) {

                System.out.print(a2[i][i1] + "\t\t");
            }
            System.out.println();
        }

        int[] z = new int[5];
        ;// 存放排序后数组元素原来所在数组的下标
        double[] b = new double[5];// 存放需要排序列的数组
        double[] d = new double[5];// 存放b[]升序后的数组
        for (int i = 0; i < 5; i++) {
            b[i] = a2[i][0];

        }
        for (int i = 0; i < b.length; i++) {
            d[i] = b[i];
        }
        Arrays.sort(d);// 升序排列
        for (int i = 0; i < d.length; i++) {
            for (int j = 0; j < d.length; j++) {
                if (d[i] == b[j]) {
                    z[i] = j;
                    b[j] = -999999;
                    break;
                } else {
                    continue;
                }
            }
        }
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("第六次比赛:25匹随机马的速度排列的前三名中的第一名比赛结果排列(组内成员不变)");
        for (int i = 0; i < a3.length; i++) {
            for (int j = 0; j < a3[i].length; j++) {
                a3[i][j] = a2[z[i]][j];
                System.out.print(a3[i][j] + "\t\t");
            }
            System.out.println();
        }
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("除去第一名 其他存在争议的马屁比赛结果");
        double[] mm = {a3[4][1], a3[4][2], a3[3][0], a3[3][1], a3[2][0]};
        Arrays.sort(mm);
        for (int i = 0; i < mm.length; i++) {
            System.out.print(mm[i] + "\t\t");
        }
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("-----------------------------------------------------------------------");
        System.out.println("最快的三匹马为" + a3[4][0] + "\t\t" + mm[4] + "\t\t" + mm[3]);


    }
}

 

 

 运行结果

运行结果:
-----------------------------------------------------------------------
-----------------------------------------------------------------------
25匹随机马的速度
41.16856306827879        40.58252617025392        67.05712863342502        67.8539567988117        70.7560619248799        
53.12588289824111        63.123216402371085        72.26841725311502        37.32135739637138        72.1084431363291        
57.54303277063529        16.54300171646218        56.4301716349477        63.46113627279707        71.48397944175716        
60.212504664887504        92.90588298272931        62.203994871534675        81.99279982567069        88.09580968326219        
11.464967736874554        84.69711834411846        89.52981943859018        57.78249880211842        47.24087381972949        
-----------------------------------------------------------------------
-----------------------------------------------------------------------
五次比赛后25匹随机马的速度排列
40.58252617025392        41.16856306827879        67.05712863342502        67.8539567988117        70.7560619248799        
37.32135739637138        53.12588289824111        63.123216402371085        72.1084431363291        72.26841725311502        
16.54300171646218        56.4301716349477        57.54303277063529        63.46113627279707        71.48397944175716        
60.212504664887504        62.203994871534675        81.99279982567069        88.09580968326219        92.90588298272931        
11.464967736874554        47.24087381972949        57.78249880211842        84.69711834411846        89.52981943859018        
-----------------------------------------------------------------------
-----------------------------------------------------------------------
取五次比赛后25匹随机马的速度排列的前三名
70.7560619248799        67.8539567988117        67.05712863342502        
72.26841725311502        72.1084431363291        63.123216402371085        
71.48397944175716        63.46113627279707        57.54303277063529        
92.90588298272931        88.09580968326219        81.99279982567069        
89.52981943859018        84.69711834411846        57.78249880211842        
-----------------------------------------------------------------------
-----------------------------------------------------------------------
第六次比赛:25匹随机马的速度排列的前三名中的第一名比赛结果排列(组内成员不变)
70.7560619248799        67.8539567988117        67.05712863342502        
71.48397944175716        63.46113627279707        57.54303277063529        
72.26841725311502        72.1084431363291        63.123216402371085        
89.52981943859018        84.69711834411846        57.78249880211842        
92.90588298272931        88.09580968326219        81.99279982567069        
-----------------------------------------------------------------------
-----------------------------------------------------------------------
除去第一名 其他存在争议的马屁比赛结果
72.26841725311502        81.99279982567069        84.69711834411846        88.09580968326219        89.52981943859018        -----------------------------------------------------------------------
-----------------------------------------------------------------------
最快的三匹马为92.90588298272931        89.52981943859018        88.09580968326219

进程已结束,退出代码0
  • 1-5 场:
  • 将25匹马分为5组,每组5匹,得到下面的排序,每组最快的马在左侧,即X1、X6、X11、X16、X21分别是每组中最快的。
组1:X1  X2  X3  X4  X5 
组2:X6  X7  X8  X9  X10 
组3:X11 X12 X13 X14 X15 
组4:X16 X17 X18 X19 X20 
组5:X21 X22 X23 X24 X25 
  • 但是,现在还不能说最快的3匹马在X1、X6、X11、X16、X21中,因为有可能最快的3匹马全部分在第一组中,即有可能出现X2比X6快
  • 但是我们肯定可以知道,每组的最后2名肯定不会是最快的3匹马,那么排除X4、X5;X9、X10;X14、X15;X19、X20;X24、X25;
  • 第6场:
X1  X2  X3  
X6  X7  X8 
X11 X12 X13 
X16 X17 X18 
X21 X22 X23 
  • 参赛的为每组的第1名:X1、X6、X11、X16、X21,假设速度排序为X1、X6、X11、X16、X21。

  • 那么我们可以知道,X16、X21及其后面的X17、X18;X22、X23均不可能是最快的3匹马。

  • 第7场:

X1  X2  X3  
X6  X7  X8 
X11 X12 X13 
  • 目前,我们可以知道,X1是25匹马中最快的,但是X2、X6、X3、X7、X11之间的速度还不确定,需要再一次比赛,而X8、X12、X13不可能是最快的前3名。
  • 参赛的为:X2、X6、X3、X7、X11,速度最快的2匹加上X1构成最快的3匹马。

标签:赛道,匹马,int,System,---------------------------------------------------------------
From: https://www.cnblogs.com/chenxiaomeng/p/18069105

相关文章

  • 比赛
    2024.2.6寄,被小学生碾压,没实力挂的分和得的一样多160pts一上考场感觉t1是dp,直接跳,回来看到60的部分分和一个小细节,易写。写了个本来需要返回值的函数,后来不需要了,没改函数类型没写return,挂60pts——下考场知道有单调性,可以双指针O(n),但是细节居多,调了3h!!t2开始感觉像线段树,后......
  • NewStarCTF 2023 公开赛道 做题随笔(WEEK1|MISC部分)
    第一题下载打开得到TXT文件好的看样子应该是base32,复制到base在线转换看看得到这玩意 base58转换得到 出了flag  第二题 下载得到一张二维码用隐写软件试试得到一张这个以为是摩斯密码,试试得到有个这玩意,嘶,好像不是试试LSB 得到flag 第三题......
  • abc343比赛总结
    写在前面A简单,随便取两个值判一下,不过这道题的名字不吉利,叫什么WA啊?B简单,读入的时候判断一下是不是\(1\)就行了。C有点点难,题目不是那么好理解(尤其是英文不好的话)。虽然说\(N\le10^{18}\)但是仔细算一下其实只需要1e6的遍历一遍就够了,毕竟有个三次方。D......
  • 比赛总结录
    比赛总结录【寒假集训】20240206测试90/400T1.珠子题目链接0/100思路:双指针,赛场上想到了,但是没有打出来代码。T2.数组题目链接0/100思路:暴力+记录。赛场上也想到了,但是赛场上忽略了一个点。又因为多打了几行而丢了$40pts$。T3.幸运区间题目链接60/100思......
  • abc340比赛总结
    写在前面作业还没有写完,简单写一下吧,做题过程中的感受就不会写那么详细了。A比较简单,就是个等差数列,数据范围很小,随便切。B简单的题目,但是我罚时了四次。把题目看错了,下次注意。C规律一开始没有推出来,写了个不带记忆化的\(O(logn)\)的深搜(没带记忆化所......
  • 20240219比赛总结
    T1素数https://gxyzoj.com/d/hzoj/p/3598先预处理出32767以下的质数,再用双指针求解#include<cstdio>usingnamespacestd;intp[32767],m,n,ans,x;boolvis[32768];voidprime(){ for(inti=2;i<=32767;i++) { if(!vis[i])p[++m]=i; for(intj=1;i*p[j]<=32767;j+......
  • 20240222比赛总结
    T1打赌https://gxyzoj.com/d/hzoj/p/3642一道大模拟,容易发现,连续的4个数的和为14,这些直接求和,其余暴力处理即可代码:#include<cstdio>#definelllonglongusingnamespacestd;intr,c,x[10]={1,6,4,3,2,5};llans;voidLeft(){ inta=x[0],b=x[1],c=x[2],d=x[3]; x[......
  • 20240221比赛总结
    T1排序https://gxyzoj.com/d/hzoj/p/3610根据代数的内容,容易得到:若\(a\geb\gec\ged\),则有\(ab-cd\geac-bd\gead-bc\)所以,只需要前2n个一大一小搭配,后2n个两两搭配,即为答案代码:#include<cstdio>#include<algorithm>#defineullunsignedlonglongusingnamespaces......
  • abc341比赛总结
    写在开头\(2024\)年\(2\)月\(17\)日,本蒟蒻参加了平生第一场国外OJ的比赛:\(AtCoder\)\(Beginner\)\(Contest\)\(341\)。题目只有英文和日文的,显然,对于我来说,看题目都成了一个问题,所以比赛结果自然不怎么理想。各题作答情况请广大读者根据我的做题顺序依次来看各题分析......
  • 【解题报告】【比赛复现】洛谷入门赛 #17 题解
    洛谷入门赛#17题解今日推歌:《春嵐feat.初音ミク》john感觉这首都快成周榜战神了(Before关于我做入门赛的精神状态:没做T4,因为题面读得我头疼……而且大模拟不想做(虽然也不是多大的模拟展开目录目录洛谷入门赛#17题解BeforeA食堂B数学选择题AfterC风球E式神考核Af......