《NET程序员面试宝典》未出的Word下载.docx
- 文档编号:17785392
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:8
- 大小:17.60KB
《NET程序员面试宝典》未出的Word下载.docx
《《NET程序员面试宝典》未出的Word下载.docx》由会员分享,可在线阅读,更多相关《《NET程序员面试宝典》未出的Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
Thefirstlineofinputistheupper-rightcoordinatesoftheplateau,thelower-leftcoordinatesareassumedtobe0,0.jLBHrnAILg
Therestoftheinputisinformationpertainingtotheroversthathavebeendeployed.Eachroverhastwolinesofinput.Thefirstlinegivestherover'
sposition,andthesecondlineisaseriesofinstructionstellingtheroverhowtoexploretheplateau.xHAQX74J0X
Thepositionismadeupoftwointegersandaletterseparatedbyspaces,correspondingtothexandyco-ordinatesandtherover'
sorientation.LDAYtRyKfE
Eachroverwillbefinishedsequentially,whichmeansthatthesecondroverwon'
tstarttomoveuntilthefirstonehasfinishedmoving.Zzz6ZB2Ltk
OUTPUT
Theoutputforeachrovershouldbeitsfinalco-ordinatesandheading.dvzfvkwMI1
INPUTANDOUTPUT
TestInput:
55
12N
LMLMLMLMM
33E
MMRMMRMRRM
TestOutput:
13N
51E
火星探测器问题。
一小队机器人探测器将由NASA送上火星高原,探测器将在这个奇特的矩形高原上行驶。
用它们携带的照相机将周围的全景地势图发回地球。
rqyn14ZNXI
每个探测器的方向和位置将由一个<
x,y)系坐标图和一个表示地理方向的字母表示出来。
为了方便导航,平原将被划分为网格状。
位置坐标示例:
0,0,N,表示探测器在坐标图的左下角,且面朝北方。
为控制探测器,NASA会传送一串简单的字母。
可能传送的字母为:
“L”、“R”和“M”。
“L”和“R”分别表示使探测器向左、向右旋转90o,但不离开它所在地点。
“M”表示向前开进一个网格的距离,且保持方向不变。
假设以广场<
高原)的正北方向为Y轴的指向。
EmxvxOtOco
输入:
首先输入的line是坐标图的右上方。
假定左下方顶点的坐标为<
0,0)。
剩下的要输入的是被分布好的探测器的信息。
每个探测器需要输入两个lines。
第一条line提供探测器的位置,第二条是关于这个探测器怎样进行高原探测的一系列说明。
位置是由两个整数和一个区分方向的字母组成的,对应了探测器的<
x,y)坐标和方向。
每个探测器的移动将按序完成,即后一个探测器不能在前一个探测器完成移动之前开始移动。
SixE2yXPq5
输出:
每个探测器的输出应该是它行进到的最终位置坐标和方向。
输入和输出测试如下。
期待的输入:
期待的输出:
答案:
程序完整代码如下。
usingSystem。
usingSystem.Collections。
namespaceConsoleApplication5
{
enumHeading{E,S,W,N}。
enumX_way{E=1,S=0,W=-1,N=0}。
enumY_way{E=0,S=-1,W=0,N=1}。
classArea
{
privatestaticintarea_X。
privatestaticintarea_Y。
privatestaticArrayListaryRovers=newArrayList(>
。
6ewMyirQFL
publicArea(>
{}
protectedvoidAddRover(RoveraRover>
{
aryRovers.Add(aRover>
}
publicstaticboolSetArea(intx,inty>
if(area_X==0&
&
area_Y==0>
{
area_X=x。
area_Y=y。
returntrue。
}
else
returnfalse。
publicstaticstringGetState(>
stringstrTemp="
"
foreach(RoveraobjinaryRovers>
strTemp+=String.Format("
{0}{1}{2}"
aobj.X,aobj.Y,aobj.heading>
returnstrTemp。
publicstaticboolCheckArea(intx,inty>
if(x>
=0&
y>
x<
=area_X&
y<
=area_Y>
}
classRover:
Area
protectedintm_X。
privateintm_Y。
privateHeadingm_heading。
publicintX
get
returnm_X。
publicintY
returnm_Y。
publicHeadingheading
returnm_heading。
publicRover(intX_in,intY_in,Headingheading_in>
kavU42VRUs
m_X=X_in。
m_Y=Y_in。
m_heading=heading_in。
AddRover(this>
publicboolTurnning(boolisLeftTurnning>
try
m_heading=(Heading>
(((int>
heading+
(isLeftTurnning?
3:
1>
>
%4>
catch
publicboolMove(>
intx_move=(int>
(X_way>
(Enum.Parse
(typeof(X_way>
m_heading.ToString(>
inty_move=(int>
(Y_way>
(typeof(Y_way>
if(CheckArea(m_X+x_move,m_Y+y_move>
{
m_X+=x_move。
m_Y+=y_move。
}
classClass1
///<
summary>
///应用程序的主进入点
/summary>
[STAThread]
staticvoidMain(string[]args>
//
//TODO:
在此加入激活应用程序的代码
stringstrTemp=Console.ReadLine(>
string[]cTemp=strTemp.Trim(>
.Split(newchar[]{'
}>
y6v3ALoS89
Area.SetArea(Convert.ToInt32
(cTemp[0]>
Convert.ToInt32(cTemp[1]>
Console.WriteLine("
Error..."
while((strTemp=Console.ReadLine(>
.ToUpper(>
!
=
State"
try
string[]cTemp=strTemp.Trim(>
.
Split(newchar[]{'
'
RoveraRover=newRover(Convert.ToInt32
(Heading>
Enum.Parse(typeof(Heading>
cTemp[2]>
strTemp=Console.ReadLine(>
foreach(charactiveinstrTemp.
ToCharArray(>
{
switch(active>
{
case'
:
aRover.Turnning(true>
break。
aRover.Turnning(false>
aRover.Move(>
}
}
}
catch(Exceptionex>
Console.WriteLine("
Console.WriteLine(Area.GetState(>
Console.Read(>
}
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NET程序员面试宝典 NET 程序员 面试 宝典