高手请进,解决超难逻辑问题!!!
G10 2004-12-14 09:13:24 有一问题,想用程序实现,但連思路也没有。问题描述如下:
有一个初始列序A0: a1,a2,a3,…,an
另有一个序列(待改变序列)A1: a1,a2,a3,…,an
1. 将A0中第K个元素在A1中找到,然后将其从A1中去掉得到序列A2。
2. 然后将A0中第K个元素插入到A2中的n个可能位置中去――得到了n个可能序列,从中任选一个作为A1。
3. 继续处理A0中的第K+1个元素。
Eg:
A0=1,2,3,4 A1=1,2,3,4
1. k=1 , 得A2=2,3,4
2. 将A0中k=1位置的元素(1)插入A2得:
1,2,3,4 2,1,3,4 2,3,1,4 2,3,4,1
3. 任选一个,假定为A1=2,1,3,4
4. k=2时, A1=2,1,3,4 ,A2=1,3,4
5. 将A0第k个位置的元素(2)插入A2得:
2,1,3,4 1,2,3,4 1,3,2,4 1,3,4,2
6. 任选一个,假定为A1=2,1,3,4
7. k=3时,A1=2,1,3,4 ,A2=2,1,4
8. 将A0第k个位置的元素(3)插入A2得
3,2,1,4 2,3,1,4 2,1,3,4 2,1,4,3
9. 任选一个,假定为A1=2,1,4,3
10. k=4时,A1=2,1,4,3 ,A2=2,1,3
11. 将A0第k个位置的元素(4)插入A2得
4,2,1,3 2,4,1,3 2,1,4,3 2,1,3,4
12. 任选一个,假定得为A1=2,1,3,4
k=4==n结束,此时A1为所求。但是大家在2,5,8,11四步中大家可以看到产生了大量的重复方案。编程序实现前想知到大概有多少重复方案,以及怎样去全丢弃它们,以便减少程序的运算量。
我知道这个问题不是100分就能体现的,解决后我会在开帖加分(不少于100)以示感谢。谢谢各位高手。