5
交换数字
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这是许多人手动解决的普遍难题。现在是时候编写一种算法来解决该问题了。 在彼此面对的两个不同侧面上排列有相等数量的火柴棍。它们之间只有一个空白空间。说出类似下图的内容(如果火柴总数为4)。 每个摇杆都可以向前滑动一步(如果紧邻的前部空间是空的),也可以跳过它们前面的一根摇杆,然后降落到自由空间中(如果该空间是空的)。反向移动是不可能的(即使空间是空的)。也不允许反向跳转。一步只能执行一次移动。 现在,您必须编写一种算法来查找所需的最小步骤,所有左手火柴将落在右侧,而所有右手火柴将落在左侧。 例如:如果总共有2个火柴棒(每侧1个),则步骤为: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 下图描述了使用4个火柴棍(每侧2个)的移动: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 [假设:输入可以是02到14之间的任何偶数(即每侧1到7个火柴)。对于此范围之外的输入,您不需要进行任何验证,也不需要提供任何错误消息。注意:在输出中,每个步骤都由一个'|'分隔 (管道)字符。COBOL程序员应始终将PIC 9(2)作为输入大小,并且还可以将输出假定为固定的最大长度450个字符,并在右边填充空格。 样本输入: 02 样本输出: 01To02|03To01|02To03| 样本输入: 04 样本输出: 02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04| 样本输入: 06 样本输出: 03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|