全国绿色计算大赛 模拟赛第二阶段(Java)第3关:渡口与船

挑战任务

给定一个渡口(二维的),请计算渡口中停了多少艘船。 船用 + 表示,空位用字母o表示。 你需要遵守以下规则:

  • 给你一个有效的渡口(二维数组),仅由船和空位组成。
  • 船只能水平或者垂直放置。换句话说,船只能由 1 行, N 列组成,或者 N 行, 1 列组成,其中N可以是任意大小。
  • 两艘船之间至少有一个水平或垂直的空位分隔,即没有相邻的船。

编程要求

补充完善右侧代码区中的countOfShips(char[][] ferry)函数,实现根据输入的数组来判断船的数量,将船的数量作为返回值返回。

测试说明

样例1

输入:
3 4
+ + + +
o o o o
o o o o

输出:

1

样例2

输入:
3 4
+ o o +
o o o +
o o o +

输出:

2

注意:右侧测试集中有输入参数传入,如:3 4 ,这两个数字是后台构建渡口时传入的大小,不会作为函数countOfShips的参数传入,可以忽略这两个数字的作用。

无效样例:

o o o +
+ + + +
o o o +

你不会收到这样的无效样例,因为船之间至少会有一个空位将它们分开。


开始挑战吧,祝你成功!

package step3;

public class Task {

	 public int countOfShips(char[][] ferry) {
			int boat = 0;
		  /**************BEGIN************/
		for(int i = 0 ; i < ferry.length;i++) {
			for(int j = 0 ; j < ferry[i].length;j++) {
				if(ferry[i][j] == '+') {
					for(int k = i+1 ; k < ferry.length ; k++) {
						if(ferry[k][j]=='o') {
							break;
						}else {
							ferry[k][j]='o';//把查过的变为o
						}

					}
					
					for(int k = j+1 ; k < ferry[i].length ; k++) {
						j = k;
						if(ferry[i][k]=='o') {
							break;
						}
					}
					boat++;
				}
			}
		}
	         
	      /***********END ***************/
		return boat;
     }
}

 

你可能感兴趣的:(全国绿色计算大赛,模拟赛)