您好,我正在练习一些编码(黑客等级挑战),但是我在构建基本逻辑时失败了,感觉好像我正在看的东西简直难以置信。
我的程序的目的是给定一个6 x 6的数组作为输入,我计算每个沙漏和并仅显示最大和。
数组的输入范围为-9至9(含)。
所以如果我的输入数组是

7 8 9 1 2 3

5 6 7 3 4 2

7 9 5 1 3 5

7 9 5 2 1 1

9 5 3 1 3 3

7 6 1 3 5 8

它应该显示所有计算出的沙漏的最大值。沙漏的一个例子是

7 8 9

... 6

7 9 5

在该特定数组中,它也恰好是最高和(51)。
当所有输入均为负数时,我面临的问题是显示最大和。

-1 -1 0 -9 -2 -2

-2 -1 -6 -8 -2 -5

-1 -1 -1 -2 -3 -4

-1 -9 -2 -4 -4 -5

-7 -3 -3 -2 -9 -9

-1 -3 -1 -2 -4 -5

那就是我无法通过测试用例的数组。因此,在我的代码中,当声明变量current sum和max sum时,将它们都初始化为零。在计算完每个和之后,我会检查当前和是否大于最大和,但是,对于所有负整数,当我的当前和已经小于最大和时,它将永远不会进入if语句和如果我目前的总和已经小于零,我看不到应该满足什么条件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;

namespace C_hash_Tutorials
{
    class HackerRank_Day11
    {
        static void Main(string[] args)
        {
            int[][] arr = new int[6][];
            string[] arr_temp;
            int arr_i = 0;
            int curr_sum = 0;
            int max_sum = 0;
            for (arr_i = 0; arr_i < 6; arr_i++)
            {
                arr_temp = Console.ReadLine().Split(' ');
                arr[arr_i] = Array.ConvertAll(arr_temp, Int32.Parse);
            }

            for (int x = 0; x < arr.Length-2; x++)
            {
                for (int y = 0; y < arr.Length-2; y++)
                {
                    curr_sum = arr[x][y] + arr[x][y + 1] + arr[x][y + 2] + arr[x + 1][y + 1] + arr[x + 2][y] + arr[x + 2][y + 1] + arr[x + 2][y + 2];
                    Console.WriteLine(curr_sum);
                    if (curr_sum > max_sum)
                    {
                        max_sum = curr_sum;
                    }
                }
            }

            Console.WriteLine(max_sum);
            Console.ReadLine();
        }
    }
}

最佳答案

我相信您要做的就是将max_sum初始化为最低要求:

int curr_sum = 0;
int max_sum = int.MinValue;
...

关于c# - 建构逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41957392/

10-17 01:46