经典算法题-公交车问题

1.问题描述


问题陈述

	你有线[] cityMap 表现城市的布局。 城市有区段。 cityMap 的元素表示的区段, 'B' 指出一个位置哪里有一个公共汽车站。  'X'指出你的位置。 其他地方将会是 '.'表示. 用一个整形变量  int walkingDistance, 表示你愿意走路去一个公共汽车站的最大的距离。 距离应该水平地被垂直地加上区段的数字计算如区段的数字。


定义

公交站:
BusStops
方法:
countStops
叁数:
串起[], int
回返:
int
方法签字:
int countStops(线[] cityMap, int walkingDistance)
(确定你的方法是公众的)


限制
-
cityMap 将会在 150种元素之间包含, 包含。在内的
-
cityMap 的每种元素将会在 150个个性之间包含, 包含。在内的
-
cityMap 的每种元素将会包含个性的相同数字。
-
cityMap 的每种元素的每个个性将会是 'B''X','.'.
-
在 cityMap 中完全地将会有一个 'X' 个性。
-
walkingDistance 将会是在 1100之间, 包含。在内的
例子
0)


{"...B.",
 ".....",
 "..X.B",
 ".....",
 "B...."}
希望走3步就可以到达的车站
回返: 2//有2个车站能满足要求
你能在顶端到达公共汽车站 (3个单位之远), 或在权利上.(2个单位之远) 那一在较低的左边中是 4个单位之远, 哪一个太远。

1)

{"B.B..",
 ".....",
 "B....",
 ".....",
 "....X"}
希望走8步就可以到达的车站
回返: 3//有3个车站能满足要求

8 的距离能在地图上拿任何地方给我们,因此,我们能到达所有的 3个公共汽车站。

2)
{" BBBBB",
 " BB.BB",
 " B.X.B",
 " BB.BB",
 " BBBBB"}
1

回返:0 //有0个车站能满足要求
许多公共汽车停止, 但是不幸地我们不能够到达任何的他们。

3)

{"B..B..",
 ".B...B",
 "..B...",
 "..B.X.",
 "B.B.B.",
 ".B.B.B"}
3
回返:7 //有7个车站能满足要求

这一份问题陈述是 TopCoder 的独有的和专有财产, 公司任何的未经认可的使用或者没有 TopCoder 的之前的书面同意的这数据的再现, 公司严格地被禁止。 (c)2003, TopCoder ,公司版权所有。

2.代码示例

public class BusStopTest {
	public boolean Test1() {
		BusStops bs=new BusStops();
		String[] map={"...B.",
					  ".....",
					  "..X.B",
					  ".....",
					  "B...."};
		int d=3;
		int result=2;
		return result==bs.countStops(map,d);
	}
	public boolean Test2() {
		BusStops bs=new BusStops();
		String[] map={"B.B..",
					 ".....",
					 "B....",
					 ".....",
					 "....X"};
		int d=8;
		int result=3;
		return result==bs.countStops(map,d);
	}
	public boolean Test3() {
		BusStops bs=new BusStops();
		String[] map={"BBBBB",
					  "BB.BB",
					  "B.X.B",
					  "BB.BB",
					  "BBBBB"};
		int d=1;
		int result=0;
		return result==bs.countStops(map,d);
	}
	public boolean Test4() {
		BusStops bs=new BusStops();
		String[] map={"B..B..",
					  ".B...B",
					  "..B...",
					  "..B.X.",
					  "B.B.B.",
					  ".B.B.B"};
		int d=3;
		int result=7;
		return result==bs.countStops(map,d);
	}
	public static void main(String[] args) {
		
		String[] map={"BBBBB",
					  "BB.BB",
					  "B.X.B",
					  "BB.BB",
					  "BBBBB"};
					  
		System.out.println (map);
		
		BusStopTest bs=new BusStopTest();
		if (bs.Test1()) {
			System.out.println ("Test1 OK");
		}
		if (bs.Test2()) {
			System.out.println ("Test2 OK");
		}
		if (bs.Test3()) {
			System.out.println ("Test3 OK");
		}
		if (bs.Test4()) {
			System.out.println ("Test4 OK");
		}
	}
}
发布了1614 篇原创文章 · 获赞 1617 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/104944482