emu in blogjava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

考试刚刚结束,题目帖出来交流一下。
Problem Statement
????
You are given a String[] cityMap representing the layout of a city. The city consists of blocks. The first element of cityMap represents the first row of blocks, etc. A 'B' character indicates a location where there is a bus stop. There will be exactly one 'X' character, indicating your location. All other characters will be '.'. You are also given an int walkingDistance, which is the maximum distance you are willing to walk to a bus stop. The distance should be calculated as the number of blocks vertically plus the number of blocks horizontally. Return the number of bus stops that are within walking distance of your current location.
Definition
????
Class:
BusStops
Method:
countStops
Parameters:
String[], int
Returns:
int
Method signature:
int countStops(String[] cityMap, int walkingDistance)
(be sure your method is public)
????

Constraints
-
cityMap will contain between 1 and 50 elements, inclusive.
-
Each element of cityMap will contain between 1 and 50 characters, inclusive.
-
Each element of cityMap will contain the same number of characters.
-
Each character of each element of cityMap will be 'B', 'X', or '.'.
-
There will be exactly one 'X' character in cityMap.
-
walkingDistance will be between 1 and 100, inclusive.
Examples
0)

????
{"...B.",
 ".....",
 "..X.B",
 ".....",
 "B...."}
3
Returns: 2
You can reach the bus stop at the top (3 units away), or on the right (2 units away). The one in the lower left is 4 units away, which is too far.
1)

????
{"B.B..",
 ".....",
 "B....",
 ".....",
 "....X"}
8
Returns: 3
A distance of 8 can get us anywhere on the map, so we can reach all 3 bus stops.
2)

????
{"BBBBB",
 "BB.BB",
 "B.X.B",
 "BB.BB",
 "BBBBB"}
1
Returns: 0
Plenty of bus stops, but unfortunately we cannot reach any of them.
3)

????
{"B..B..",
 ".B...B",
 "..B...",
 "..B.X.",
 "B.B.B.",
 ".B.B.B"}
3
Returns: 7

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

posted on 2005-12-13 12:00 emu 阅读(1019) 评论(2)  编辑  收藏 所属分类: google编程大赛模拟题及入围赛真题

评论

# emu解 BusStops 2005-12-13 14:23 emu
public class BusStops
{
public int countStops(String[] cityMap, int walkingDistance){
int x=-1,y=-1,result=0;
for(int i=0;i<cityMap.length;i++){
if(cityMap[i].indexOf("X")>-1){
y=i;x=cityMap[i].indexOf("X");
break;
}
}
for(int i=0;i<cityMap.length;i++){
String s = cityMap[i];
for(int j=0;j<s.length();j++){
if(s.charAt(j)=='B'){
int a= Math.abs(y-i)+Math.abs(x-j);
if(a<=walkingDistance) result++;
}
}
}
return result;
}
public static void main(String[] args)
{
BusStops b = new BusStops();
System.out.println(b.countStops( new String[]{"...B.",".....","..X.B",".....","B...."},3));
System.out.println(b.countStops( new String[]{"B.B..",".....","B....",".....","....X"},8));
System.out.println(b.countStops( new String[]{"BBBBB","BB.BB","B.X.B","BB.BB","BBBBB"},1));
System.out.println(b.countStops( new String[]{"B..B..",".B...B","..B...","..B.X.","B.B.B.",".B.B.B"},3));
}
}  回复  更多评论
  

# re: google中国编程挑战赛资格赛真题 -- BusStops(250分) 2005-12-18 17:46 guest
for(int i=0;i<cityMap.length;i++){
String s = cityMap[i];
for(int j=0;j<s.length();j++){

i,j的起点可缩小,不过这是250分的,就别计较了,呵呵  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: