半年过去了还有人说64马8跑道最少10次分前四,写个9次的部分代码给你们看看

本文介绍了一种解决64匹马通过最少轮次确定前四名的算法,核心是通过每次比赛记录前四名并进行下一轮比赛,确保在9轮内找出最快轮次。代码示例展示了如何进行比赛逻辑,并分析了在不同情况下所需轮次,证明了最少9轮即可得出结果,优于传统认为的10轮。
摘要由CSDN通过智能技术生成

准确的说9次是将所有排序里必要的大小关系囊括在内的最少轮次解
一轮确定1>2>3>4,8轮确定4>其他。
后面是最少只要9次的部分代码(后面懒的写),如有写的不好的地方欢迎留言指导
主要思路是用每次前四的进入下一轮,设置一个Index选取第一轮排第四的第四马和其他没比的七匹马比,将第一次前三加入win数组。
分情况:
1.Index排前四
将排Index前面的马加入win数组,index继续参与比赛
2.Index排后四
将该轮第四马替换Index值,将排Index前面的马加入win数组,用替换后的Index参与比赛。
第一次大比结束共需9轮
在Index为64马中排第四的马即可得出最快轮次为9
后面没写的代码可用win数组查阅horse数组中的马参与比赛,进入第二轮大比
using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
double[] horse = { };
int[] win = { };
int Index = -1;
int quick = 0;
int count = 0;
int turn = 1;
Random speed = new Random(100);
for (int i = 0; i < 64; i++)
{
double t = speed.NextDouble();
for (int j = 0; j <=

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值