網易遊戲研發工程師筆試題----賽馬
阿新 • • 發佈:2018-12-23
該問題的分析其實是挺簡單的,題目說賽道無限長,比賽時間無限長,那麼該問題就變成了之與速度有關的問題了。又因為各個馬的速度都不相同,且開始位置也不相同,這就變成簡單的數學排序問題了;分析知:可將馬的速度進行排序,如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.0 f/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#程式碼輸出的問題,不是本題解題思路的問題。