gpt4 book ai didi

c# - 从三角形的每一行中获取最大的数字并将其相加

转载 作者:行者123 更新时间:2023-11-30 13:30:29 29 4
gpt4 key购买 nike

我有下面的三角形数字,它们将作为参数发送给函数

5
9 6
4 6 8
0 7 1 5

现在这将在下面的函数中作为字符串接收,格式为 5#9#6#4#6#8#0#7#1#5。到目前为止,我只尝试对 #

中的数字进行波纹处理
public class Sample
{
public static string validtrianglesum(string input)
{
string sum="0";
foreach(char num in input)
{
if(!num.Equals('#'))
{
Console.PrintLine(num); //here am getting only the nums excluding #
//How to sum up based on each row
}
}
return sum; //return
}
}

如何从每一行中获取最高数字并对它们求和,我如何识别行以求和?希望能得到一些帮助。

最佳答案

让我们将其分解如下:

首先,将输入转化为数字数组:

string input = "5#9#6#4#6#8#0#7#1#5";
var numbers = input.Split('#').Select(int.Parse).ToArray();

现在假设我们有一个 MakeTriangular(int[])将数字数组转换为行序列的方法,第一行的长度为 1,第二行的长度为 2,依此类推,因此它返回 IEnumerable<IEnumerable<int>> .

然后我们可以使用它和 Linq 来计算每行中最大值的总和,如下所示:

int sum = MakeTriangular(numbers).Sum(row => row.Max());

给出了答案。

执行MakeTriangular()可能看起来像这样:

public static IEnumerable<IEnumerable<int>> MakeTriangular(int[] numbers)
{
for (int i = 0, len = 1; i < numbers.Length; i += len, ++len)
yield return new ArraySegment<int>(numbers, i, len);
}

将它们全部放在一个可编译的控制台应用程序中:

using System;
using System.Collections.Generic;
using System.Linq;

namespace Demo
{
class Program
{
public static void Main()
{
string input = "5#9#6#4#6#8#0#7#1#5";
var numbers = input.Split('#').Select(int.Parse).ToArray();
int sum = MakeTriangular(numbers).Sum(row => row.Max());
Console.WriteLine(sum);
}

public static IEnumerable<IEnumerable<int>> MakeTriangular(int[] numbers)
{
for (int i = 0, len = 1; i < numbers.Length; i += len, ++len)
yield return new ArraySegment<int>(numbers, i, len);
}
}
}

关于c# - 从三角形的每一行中获取最大的数字并将其相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33822703/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com