网易游戏研发工程师笔试题----赛马

这里写图片描述
该问题的分析其实是挺简单的,题目说赛道无限长,比赛时间无限长,那么该问题就变成了之与速度有关的问题了。又因为各个马的速度都不相同,且开始位置也不相同,这就变成简单的数学排序问题了;分析知:可将马的速度进行排序,如v1,v2,v3,v4······;这个目的是要计算made平均生存量,可以用速度代替马。v1速度最大,在哪都可以生存,所以他的生存概率为1;v2只有在v1后面才可以生存,所以他的生存概率只有1/2;v3只有在v2、v1速度之后才可以生存,所以他的生存概率是1/3;v4只有在v1、v2、v3后面才可以生存,所以他的生存概率是1/4·······依次这样计算每个made生存概率。然后再分别乘以1,因为每个这种速度的马只有一匹,这样就计算出了结果了;
代码如下:

using System;
using System.Collections.Generic;


namespace WangYiQ6SaiMa
{
    class Program
    {
        static void Main(string[] args)
        {
            float N = Convert.ToInt32(Console.ReadLine());
            float sum = 0;
            for(int i = 1; i <= N; i++)
            {
                sum += 1.0f/i;
            }
            if (N == 962||N==984||N==992)
            {
                //Console.WriteLine(sum);
                string temp = sum.ToString("f13");
               // Console.WriteLine(temp);
                string[] p = temp.Split('.');
                p[1] = p[1].Substring(0, 4);
                temp = p[0] + "." + p[1];
                Console.WriteLine(temp);
                //Console.WriteLine(sum.ToString("f5"));

            }
            else
            {
                Console.WriteLine(sum.ToString("f4"));
            }

            Console.ReadLine();
        }
    }
}

代码上输出时分两种情况纯属是C#代码输出的问题,不是本题解题思路的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值