编程题 共4道
给定一个包含5个数字(0-9)的字符串,例如 “02943”,请将“12345”变换到它。 你可以采取3种操作进行变换
1. 交换相邻的两个数字
2. 将一个数字加1。如果加1后大于9,则变为0
3. 将一个数字加倍。如果加倍后大于9,则将其变为加倍后的结果除以10的余数。
最多只能用第2种操作3次,第3种操作2次 求最少经过多少次操作可以完成变换。
12435 99999 12374
1 -1 3
给定一张 R*C 的地图,由 "X" 和 "O" 组成。
现在需要重新处理这张地图,找到地图边缘的那些 "O"。你需要将这些地图边缘上的 "O" 保留下来,然后将其他的 "O" 全部替换为 "X"。
地图边缘的 "O" 指的是那些处于第一行/列或最后一行/列上的 "O",以及从这些 "O" 的相邻位置(上下左右)延伸出去的 "O"。
2 2 3 OXX XXO 5 5 XXXOX XXXOX XOOXX XXOXX XOXXX
OXX XXO XXXOX XXXOX XXXXX XXXXX XOXXX
42是:
·组合数学上的第5个卡特兰数
·字符'*'的ASCII码
·钼的原子序数
·6与9的乘积结果的13进制表示
·生命、宇宙以及任何事情的终极答案
·以及……表达式(1+5)/2*(6-4)*7的值
因此,小机器人Marvin发明了这个叫42点的小游戏。在这个游戏中,玩家会获得n个数。玩家需要使用'+'、'-'、'*'、'/'、'('、')'以及这n个数构成一个合法的中缀表达式,并使得该表达式的值为42。n个数之间的顺序可以改变。表达式运算过程中只能出现整数。
由于过于抑郁,Marvin无力完成这个游戏,于是来找你帮忙。你的任务是对于给定的n个数,判断他们是否能根据上述游戏规则算出42。
6 1 5 2 6 4 7
YES
小 I 和小 B 最近沉迷一款叫做《Project Summer》的游戏,小 I 扮演这个游戏中需要逃生的无辜者(Innocent), 小 B 扮演这个游戏中抓住无辜者,阻止其逃生的背叛者(Betrayer)。
这个游戏的地图是一个 N 行 M 列 的矩形,每个格点表示一个位置。 '#' 表示地图中的障碍物,'.' 表示地图中的空地,此外,地图中还有只有背叛者才能使用的传送门,用小写字母 'a' - 'z' 标记,它们在地图上成对出现。
角色可以花费 1 单位的时间从一个格子走到上下左右相邻的 4 个空地中的另一个格子(不可以走出地图边界或者走到障碍物上)。
此外,当小 B 扮演的背叛者走到一个传送门上时,他可以花费 1 单位的时间从当前格子传送到与当前格子相同字母的另一个传送门处(他也可以选择不传送,此时没有花费任何时间,待在原地不动)。传送是双向的。比如,现在小 B 走到了标记为 'a' 的格子上,那么他可以选择花费一单位的时间传送到另一个标记为 'a' 的格子上,也可以选择不传送,那么他就待在原地不动。
现在,小 I 被小 B 的陷阱困住了,无法移动。给出地图上小 B 和小 I 所在的格子(他们都站在空地上),求小 B 最少需要花费多少时间才能走到小 I 所在的格子抓住他。如果小 I 无法抓住小 B,输出 -1
3 5 5 Bx#.. #a.#. ..... ##..# .x.aI 5 5 BIa.a x#.x. .#.## ..... ##### 2 2 B# #I
Case #1: 4 Case #2: 1 Case #3: -1