C# 获取数字字符串输入的所有子字符串的总和

C# 获取数字字符串输入的所有子字符串的总和,c#,dynamic-programming,C#,Dynamic Programming,我在一次在线编程竞赛中遇到了一个与内存相关的异常,竞赛要求我获取数字字符串输入的所有子字符串的总和 例如,对于“123”的输入,期望的输出是“164”。 这个问题似乎很简单,我想出了一个动态规划解决方案。 我所做的是一种自下而上的方法,将所有子字符串添加到一起 我认为解决方案本身是正确的,因为它通过了50%以上的测试用例。以下是我的简单解决方案: static int substrings(string n) { decimal totalSubstri

我在一次在线编程竞赛中遇到了一个与内存相关的异常,竞赛要求我获取数字字符串输入的所有子字符串的总和

例如,对于“123”的输入,期望的输出是“164”。

这个问题似乎很简单,我想出了一个动态规划解决方案。 我所做的是一种自下而上的方法,将所有子字符串添加到一起

我认为解决方案本身是正确的,因为它通过了50%以上的测试用例。以下是我的简单解决方案:

static int substrings(string n)
        {
            decimal totalSubstring = 0;
            for (var i = 0; i < n.Length; i++)
            {
                for (var j = 1; j <= n.Length - i; j++)
                {
                    var strNumber = n.Substring(i, j);
                    decimal number = Convert.ToDecimal(strNumber);
                    totalSubstring = totalSubstring + (number);
                }
            }
            return (int)(totalSubstring % 1000000007);
        } 
静态int子字符串(字符串n)
{
十进制totalSubstring=0;
对于(变量i=0;i对于(var j=1;j,既然你说你想自己解决这个问题,下面是另一种思考的方式

1
10
100
2
2
20
20
3
3
3
数字2显示为

1
10
100
2
2
20
20
3
3
3
数字3显示为

1
10
100
2
2
20
20
3
3
3

1+10+100+2+2+20+20+3+3+3=164

也许用十进制来代替
decimal
。肯定有一个更简单的解决方案。我听说,使用C编程语言的开发人员已经为类似的问题定制了一个解决方案!你有什么想法吗?我怀疑有没有更简单的解决方案来处理大于6K的数字s!@MatthewWatson问题请求是返回模10^9+7@Erno123和23都有2个作为20?