网易游戏研发工程师笔试题----赛马
程序员文章站
2023-12-24 22:08:51
...
该问题的分析其实是挺简单的,题目说赛道无限长,比赛时间无限长,那么该问题就变成了之与速度有关的问题了。又因为各个马的速度都不相同,且开始位置也不相同,这就变成简单的数学排序问题了;分析知:可将马的速度进行排序,如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#代码输出的问题,不是本题解题思路的问题。
推荐阅读