求一排列法

popcode 2002-08-03 10:46:50
1、2、3、4、5 这5个数

任意移动相邻两个数,要刚好移动3次,然后这5个数刚好重新排列成1、2、3、4、5
注意,被移动的两个数,不能插在中间的,只能放在首尾
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangning111 2002-08-23
  • 打赏
  • 举报
回复
我们的理解不同,我理解是这样

比如:2,3相临,把2,3拎出来放到前面(也可以放在后面)
结果是2,3,1,4,5

再3,1相临(当然(2,3)(1,4)(4,5)也是相临),拿出来放在前面
结果是3,1,2,4,5

不知popcode (紫枫) 是什么意思
zhoukun666 2002-08-11
  • 打赏
  • 举报
回复
up
dcyu 2002-08-06
  • 打赏
  • 举报
回复
不对,
这题是没有解的。
下面推广到更一般的命题:
有n个数不妨设为1,2,3...n
不可能经过奇数次变换回到原始状态。
考虑n个数的位置与数值的匹配关系:
(1),(2),(3),...(n). 组合数为n.
若相交换其中的两个数,则将这两个数合并为一个组合,比如:
(1,3),(2),(4)...(n). 构成的新组合为n-1.
然后接着操作:交换3,4:
(1,3,4),(2),(5)...(n) 组合数为n-2.
2,5交换:
(1,3,4),(2,5)...(n) 组合数n-3.
4,5交换:
(1,2,3,4,5)...(n) 组合数n-4.
1,5交换:
(1),(2,3,4,5)...(n) 组合数n-3.
序列: 组合 组合数
1,2,3,4,5 (1),(2),(3),(4),(5) 5
3,2,1,4,5 (1,3),(2),(4),(5) 4
4,2,1,3,5 (1,3,4),(2),(5) 3
4,5,1,3,2 (1,3,4),(2,5) 2
5,4,1,3,2 (1,2,3,4,5) 1
1,4,5,3,2 (1),(2,3,4,5) 2
1,3,5,4,2 (1),(3),(2,4,5) 3
有两种情况:
(1)如果组合内部交换,则其他的组合数不变,组合数不可能增加2,只可能增1。
(2)如果组合之间交换,则这两个组合结合成一个更大的组合,故组合数减1。
可以看出每次操作后组合数+1,或-1。
因此不可能经过奇数次的交换得到组合数为n的排列。
这好象是Poly变换。

zhangning111 2002-08-04
  • 打赏
  • 举报
回复
只有5个数的话,遍历好了。

初始序列1、2、3、4、5
终止序列1、2、3、4、5

操作集(1,0)(1,1)(2,0)(2,1)(3,0)(3,1)(4,0)(4,1)
*(1,0)就是把1、2放在前面,(3,1)就是把3、4放在后面*

结果集是一个三个元素的序列,设为A,B,C
1、A,B,C都属于操作集
2、A,B,C可以相同(这一条你没具体说)
3、初始序列经过A,B,C的操作得到的是终止序列

得到所有A,B,C的排列,符合以上3条的都是结果

不用代码了吧
superwsc 2002-08-03
  • 打赏
  • 举报
回复
好象也不可能啊,中间的哪个数一定是三???
superwsc 2002-08-03
  • 打赏
  • 举报
回复
可能么,除非最后一个和第一个数算相邻的

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧