???477
2017-01-21 15:08
采纳率: 100%
浏览 1.1k

Java 小白求编写一道算法题

约翰和他的朋友索尼娅打一场战舰游戏。游戏在N行的正方形地图上进行,编号从1到N.每行包含N个单元格,每列标有连续的英文大写字母(A,B,C等)。每个单元通过由其行编号及其列编号组成的串来标识:例如,“9C” 表示第9行中的第三单元,“15D”表示第15行中的第四单元。

如下图所示,船只由最大面积为4个单元格的矩形定义,X落在船上时表示船被击中,如果一个船每个部位被击中,则该船被沉没。
图片说明

目标是计算沉没的船只的数量和被击中但未沉没的船只的数量。

例如,下图显示了一个大小为N = 4的地图,两个蓝色船只和五个用字母“x”标记的命中;
图片说明
在这个例子中,一艘船已经沉没,另一艘已经被击中但没有沉没。在下一张图片中,沉船被显示为灰色,被击中但尚未沉没的船舶显示为红色:

船的位置被给出为字符串S,其包含分别描述每艘船的左上角和右下角单元的位置对。船舶的描述用逗号分隔。命中的位置为字符串T,包含描述被击中的地图单元的位置:对于上述示例中的地图,S =“1B 2C,2D 4D”和T =“2B 2D 3D 4D 4A”。 S中的船舶和T中的命中可以以任何顺序出现。

写一个函数:

class Solution {public String solution(int N,String S,String T); )

假定地图N的大小和分别描述船只命中位置的两个字符串S,T返回具有两个数字的字符串:沉没船舶的计数和已被击中但未沉没的船舶的数量,用逗号分隔。

例如,假设N = 4,S =“1B 2C,2D 4D”和T =“2B 2D 3D 4D 4A”,您的函数应返回“1,1”,如上所述。

5条回答 默认 最新

相关推荐 更多相似问题