C# - 试图解决Kattis Coast Length

时间:2017-03-19 16:42:56

标签: c# arrays multidimensional-array difference

我试图解决这个Kattis Coast问题,我在网站https://open.kattis.com/problems/coast找到了这个问题。挑战的目标是计算海岸线。为此我们已经获得了景观地图。其中包括以下内容:5 6,011110,010110,111000,000010,000000。输出或结果应为20作为整数。

想法是将输入放在锯齿状阵列中,一个用于X轴(N),一个用于Y轴(M)。然后循环这个数组并计算land(1)和water(0)之间的差异。这已经解决了,所以我尝试通过网格线对精确的海岸线进行硬编码,给出了答案20.

我不知道我是否在使用数组和计算差异的正确轨道上,这就是为什么我在这里寻求帮助。 找到了这个:http://challenge.csc.kth.se/2011/solutions.pdf。在页面/幻灯片3处,有一个关于滑行长度问题的breif解释。它确实给了我任何东西,但也许有人掌握它。

有人可以查看我的程序并指出解决方案吗?

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

namespace Task_1  // Coast
{
class Program
{

    static void Main(string[] args)
    {

        int[][] nboxjaggedarray = new int[5][]
        {
            new int[6]  { 0, 1, 1, 1, 1, 0 }, // The N-input. Counted from the X-Axis
            new int[6]  { 0, 1, 0, 1, 1, 0 },
            new int[6]  { 1, 1, 1, 0, 0, 0 },
            new int[6]  { 0, 0, 0, 0, 1, 0 },
            new int[6]  { 0, 0, 0, 0, 0, 0 }
        };

        int[][] mboxjaggedarray = new int[6][]  // The M-input. Counted from the Y-Axis
        {
            new int[5]  { 0, 0, 1, 0, 0 },
            new int[5]  { 1, 1, 1, 0, 0 },
            new int[5]  { 1, 0, 1, 0, 0 },
            new int[5]  { 1, 1, 0, 0, 0 },
            new int[5]  { 1, 1, 0, 1, 0 },
            new int[5]  { 0, 0, 0, 0, 0 }
        };

        int[][] ngridlinesjaggedarray = new int[6][] //Consists of every N-line in the grid. (N = X-Axis)
        {
            new int[6]  { 0, 1, 1, 1, 1, 0 },
            new int[6]  { 0, 0, 0, 0, 0, 0 },
            new int[6]  { 1, 0, 0, 1, 1, 0 },
            new int[6]  { 1, 1, 1, 0, 1, 0 },
            new int[6]  { 0, 0, 0, 0, 1, 0 },
            new int[6]  { 0, 0, 0, 0, 0, 0 }
        };

        int[][] mgridlinesjaggedarray = new int[7][] // Consists of every M-line in the grid. (M = Y-Axis)
        {
            new int[5]  { 0, 0, 1, 0, 0 },
            new int[5]  { 1, 1, 0, 0, 0 },
            new int[5]  { 0, 0, 0, 0, 0 },
            new int[5]  { 0, 0, 1, 0, 0 },
            new int[5]  { 0, 0, 0, 1, 0 },
            new int[5]  { 1, 1, 0, 1, 0 },
            new int[5]  { 0, 0, 0, 0, 0 }
        };



        int ntotal = Sum(ngridlinesjaggedarray);
        int mtotal = Sum(mgridlinesjaggedarray);
        Console.WriteLine(ntotal + mtotal);
        Console.ReadKey();
    }

    public static int Sum(int[][] arr)  // Sums up every item in a JaggedArray
    {
        int total = 0;
        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] != null)
            {
                for (int j = 0; j < arr[i].Length; j++)
                {
                    total += arr[i][j];
                }
            }
        }
        return total;
    }

}
}

0 个答案:

没有答案