我在网上做这个问题:https : //www.codewars.com/kata/getting-along-with-integer-partitions/train/csharp/5af1b2b768e64499ed000102
它的基本思想是我应该找到一个数字的所有部分并显示范围、平均值和中位数。该程序可以很好地处理大多数数字,但是当面对一些数字时,平均值并不准确。
这些是我遇到问题的一些数字:
43 -- 预期:平均:202904.6 5 但是是:202904.6 0
36 -- 预期:平均:26832.8 1 但是是:平均:26832.8 0
41 -- 预期:平均:113720.8 2 但是是:平均:113720.8 0
这是因为我使用浮点数来存储我的数字吗?如果是这样,我应该使用什么数据类型?
这是我的代码(您可以将其直接粘贴到我链接的网站上,它会给您带来与我相同的错误)
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
public class IntPart
{
public static List<List<string>> listOfLists = new List<List<string>>();
public static List<string> lastPartion = new List<string>(); //get the last partion
public static string Part(long n)
{
Console.WriteLine(n);
lastPartion.Clear();
listOfLists.Clear();
List<List<long>> result = new List<List<long>>();
partition((int)n);
//gets rid of blip where there's an extra space at the start of the string and
foreach (var cycle in lastPartion)
listOfLists.Add(cycle.Split(' ').ToList());
//converts the cycles to a list and converts string list to double
for (int i = 0; i < listOfLists.Count; i++)
{
listOfLists[i].RemoveAt(0);
result.Add(listOfLists[i].Select(x => long.Parse(x)).ToList());
}
return removeAndSort(result);
}
//partioning algorithom with recursion
public static void partition(int n)
{
partition(n, n, "");
}
public static void partition(int n, int max, string prefix)
{
if (n == 0)
{
lastPartion.Add(prefix);
return;
}
for (int i = Math.Min(max, n); i >= 1; i--)
partition(n - i, i, prefix + " " + i);
}
达令说
相关分类