有A,B,C,D四辆车顺序开进栈结构的站内,请列所有可能的出站顺序... (100分)

  • 主题发起人 主题发起人 飞云.net
  • 开始时间 开始时间

飞云.net

Unregistered / Unconfirmed
GUEST, unregistred user!
有A,B,C,D四辆车顺序开进栈结构的站内,请列出所有可能的出站顺序(注意:每一辆车进站后可以马上开出,但不能出了又进来。)
如果用穷举法写这个程序,请讲讲你的思路。
 
不太明白,A,B,C,D的进栈顺序是怎样。是不是一定要四个都进栈才出,还是可以即进即出。继续关注。
 
abcd依次进站,出站时abcd可以即进即出,但不能出了再进来。
 
我也有点不明白,如果按照栈的原理,一次只能进一个也只能出一个,而且是先进先出的,那么只要abcd是按这个顺序进栈的话,只能一个以abcd这个顺序出栈,如果说abcd的进栈顺序可以顺意变的话,那么出栈也就是进栈的顺序了。
 
暂时想到一种方法但未验证。
大概是路,
首先,列出所有的顺序可能。将A,B,C,D变成1,2,3,4
列出所有的排列组合
1,2,3,4,
1,2,4,3,
1,3,4,2,
。。。。。。
然后筛选,若有a-a[i+1]>1的情况都不行。
暂时想到这么多。有进展再讨论
 
不要用计算机算法,用数学算法,从1个开始逆推,简单得很
 
----->
ABCD
BCDA
CDBA
DCBA
 
to 肥羊
4个当然简单但many时就有意思了。
继续补充,不行的排列条件应该是a-a[i+1]>max,max为a[0]到a[i-1]中最大的数。
 
to wlmmlw
BDCA
ADCB
.....
 
思路可以是这样的
把ABCD......放在一个数组中
(1)一个数进栈,两种情况:马上出栈或不出栈,马上出栈则输出该数。
(2)第二个数进栈,考虑是否出栈,B不出栈,则执行第三步;B出栈则输出B,栈是否空,不空则考虑里面的数是否继续出栈。
(3)第三个数进栈,考虑该数是否马上出栈,不出则执行第四步,出栈则输出该数;判断栈是否空?不空则是否有数出栈...................
(4)第四个数进栈...............
...........
(n)第n个数进栈..........
 
楼主怎么一点回应都没有。我又想了想之前的条件还不行。
改成,看是否存在a[x] (x>i+1),a[x]<a and a[x]>a[i+1],
有则该排列不符合题目要求。若遍历数组后都没有a[x],则输出。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1907504
 
to 轻舞肥羊:
请将你的数学方法给我说的详细一点.
 
多人接受答案了。
 
后退
顶部