我试图解决这个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;
}
}
}