【发布时间】:2021-11-30 06:51:31
【问题描述】:
需要计算船的数量。船舶以“战舰”游戏的形式呈现。
“1”代表船,“0”代表水。 C#
namespace Ships
{
class Program
{
static int[,] ships = new int[10, 10] {
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, },
{ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, },
{ 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, },
{ 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, },
{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
{ 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, }
};
static void Main(string[] args)
{
int count = 0;
// code write here
Console.WriteLine(count);
Console.ReadLine();
}
}
}
【问题讨论】:
-
从技术上讲,你不能。板上没有足够的信息编码,因为如果您在 2x1 或 3x1 旁边有一个 1x1,则无法知道那是两艘船还是一艘。
-
就我个人而言,我会采取懒惰的路线,并根据其长度为每种类型的船使用不同的编号。 1x1 是 1,2x1 是 2,依此类推。
-
@JSGarcia - 我刚刚检查了孩之宝的类似规则。相信这是一个共同的家规,而不是官方的。
-
@JSGarcia 绝对不是真的。你不能去对角线或重叠,但你肯定会在邻接方面很棘手。
-
是否必须使用二维数组?因为我只是不使用它,而是选择跟踪单个飞船实例并以此动态渲染战场。这在很多方面都会变得容易得多,包括跟踪船只数量。