飘雪朝晨 2017-11-07 08:54 采纳率: 0%
浏览 1074

求帮忙给一个java解题思路

很久很久以前,在穿越狂野西部一片沙漠的途中,…

你迷路了,有人给你指引到达目的地的方向。 方向为["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]。 显然"NORTH"和"SOUTH"是相反的方向,"EAST“和"WEST"也是。 朝一个方向前进,然后按反方向前进等于回到原地。 由于这是狂野的西部,天气恶劣,严重缺水,你要节省自己的体力,否则你可能会渴死!

如何才能根据指引聪明的穿越沙漠?

那人给出的方向指示是:例如:

["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
你可以明显看出往"NORTH",然后往"SOUTH"肯定不合理,最好原地不动!所以你的任务是简化指引,识破真正的方向。在这种情况下,简化后明智的方向是:

["WEST"]
怎么一回事?

举个栗子:

在 ["NORTH", "SOUTH", "EAST", "WEST"]中,方向"NORTH"+"SOUTH"相反,原地不动,方向移除。路径变为[“EAST”,“WEST”],现在“EAST”和“WEST”彼此抵消,因此最终结果为[ ]。

在["NORTH", "EAST", "WEST", "SOUTH", "WEST", "WEST"]中,"NORTH"和"SOUTH"之间并没有直接相反,但在消除"EAST"和"WEST"之后,"NORTH"和"SOUTH"就变的直接相反了,所以整个路径可以减少到[“WEST”,“WEST”]。

不可简化的栗子:

[“NORTH”,“WEST”,“SOUTH”,“EAST”]不可简化,因为相邻的两个字符串不是相反方向。

任务

写一个函数dirReduc(),它将使用一个字符串数组,将相邻的两个相反方向移除并返回一个字符串数组。

示例:

dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]) => ["WEST"]
dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH"]) => []
  • 写回答

4条回答 默认 最新

  • airfling 2017-11-07 09:03
    关注

    这个问题的思路应该是相关方向的两个值是相反数,例如NORTH=-1,SOUTH=1,EAST=-1i(虚数),WEST=1i,而你要做的是比较两个数相加是否等于0,如果等于0,则取出这两个数,之后是比较四个数相加是否等于0,以此类推,只要最后所有的数都判断返回的数组就是最终数组

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料