예제 #1
0
        public double New21Game(int N, int K, int W)
        {
            FixedTest.TestNew21Game(N, K, W);
            if (K < 1)
            {
                return(1);
            }
            if (N < 1)
            {
                return(0);
            }
            double[] rates      = new double[K + 1];
            double   singleRate = 1d / W;

            for (int i = 1; i <= K; i++)
            {
                if (i == 1)
                {
                    rates[i] = Math.Min(N - K + 1, W) * singleRate;
                }
                else
                {
                    var temp = 0d;
                    //待计算
                    int j = 1;
                    for (; j < Math.Min(i, W + 1); j++)
                    {
                        temp += rates[i - j];
                    }
                    rates[i] += temp * singleRate;
                    if (j == W + 1)
                    {
                        continue;
                    }
                    //安全区
                    int newN = N - K + i;
                    if (newN > W)
                    {
                        rates[i] += (W - j + 1) * singleRate;
                    }
                    else
                    {
                        rates[i] += (newN - j + 1) * singleRate;
                    }
                }
                Console.WriteLine($"{i} : {rates[i]}");
            }
            return(rates[K]);
        }
예제 #2
0
        private static AllTestRecord CreateExpectedTestData()
        {
            var fixedTestData = new FixedTest();

            fixedTestData.Value[0] = 5;

            return(new AllTestRecord
            {
                arrayTest = new List <long> {
                    1, 2, 3, 4
                },
                booleanTest = true,
                bytesTest = new byte[] { 1, 2, 3, 4 },
                doubleTest = 5.0,
                enumTest = AllEnum.BAR,
                fixedTest = fixedTestData,
                floatTest = 99.0f,
                intTest = 3,
                longTest = 4,
                stringTest = "required",
                mapTest = new Dictionary <string, long>
                {
                    { "foo", 1 },
                    { "bar", 2 }
                },
                nestedTest = new AllTestRecord
                {
                    booleanTest = true,
                    bytesTest = new byte[] { 1 },
                    stringTest = "required",
                    fixedTest = fixedTestData,
                    arrayTest = new List <long> {
                        1, 2, 3, 4
                    },
                    mapTest = new Dictionary <string, long>
                    {
                        { "foo", 1 },
                        { "bar", 2 }
                    },
                }
            });
        }
예제 #3
0
 public override AllTestRecord echoParameters(bool booleanTest, int intTest, long longTest, float floatTest, double doubleTest,
                                              byte[] bytesTest, string stringTest, AllEnum enumTest, FixedTest fixedTest, IList <long> arrayTest,
                                              IDictionary <string, long> mapTest, AllTestRecord nestedTest)
 {
     return(new AllTestRecord
     {
         stringTest = stringTest,
         booleanTest = booleanTest,
         intTest = intTest,
         arrayTest = arrayTest,
         bytesTest = bytesTest,
         doubleTest = doubleTest,
         enumTest = enumTest,
         fixedTest = fixedTest,
         floatTest = floatTest,
         longTest = longTest,
         mapTest = mapTest,
         nestedTest = nestedTest
     });
 }