社区
数据结构与算法
帖子详情
求教算法,不知道这个难不难
zgy231552
2002-05-17 04:29:39
1,2,3,4,5....n 按顺序进栈,设计一个算法,输出所有可能的出栈可能
...全文
30
7
打赏
收藏
求教算法,不知道这个难不难
1,2,3,4,5....n 按顺序进栈,设计一个算法,输出所有可能的出栈可能
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zgy231552
2002-05-19
打赏
举报
回复
大家写写看,我回去好好想想.................
pigsanddogs
2002-05-18
打赏
举报
回复
我的思路:
fun(n):以第一个数出践为标识.那有n-1种可能;
它可以尾随2,3...n 出践比如尾随m出践.在操作(出践)它之前,他一直是践底.其余数的操作都不跟他有关.所以有fun(m-1).而之后操作(出践)它以后.践为空了.之后还余下n-m个待排有续数.他的操作方法为fun(n-m).
所以可以分解成 fun(n)=fun(0)*fun(n-1)+fun(1)*fun(n-2)+...+fun(n-1)*fun(0) fun(1)=0并且定义fun(0)=1.
程序实现:
#include <iostream.h>
#include <stdio.h>
#define MAX_NUMBER 3
void push(int n)
{
cout<<"push("<<n<<")";
}
void pop(int n)
{
cout<<"pop("<<n<<")";
}
void fun(int start,int end)
{
for(int i=start;i<=end;i++)
{
push(start);
if(i!=start)
fun(start+1,i);
pop(start);
if(i!=end)
fun(i+1,end);
cout<<endl;
}
}
void main()
{
fun(1,MAX_NUMBER);
}
/*这个递归函数有个bug.我不知道怎么修改.比如fun(1,3)递归成为=push(1),fun(2,3),pop(1).<----其中一个解;
本来因该把fun(2,3)={push(2),pop(2),fun(3,3) },{push(2),fun(2,3),pop(2)},每个分解式都要加入 push(1),pop(1),可以用递归方法我无法展开.只是成为了 push(1),{push(2),pop(2),fun(3,3),{push(2),fun(2,3),pop(2),}pop(1)....欢迎大家指正..!
另外 leopro(六月飞雪) 的思路不错.谁能把算法写出来?
*/
javan
2002-05-18
打赏
举报
回复
我写了个程序,用比较笨的方法,用循环输出。
例如,用数组a[4]={'a','b','c','d'}的下标0,1,2,3来表示进栈顺序。
然后根据栈的特性写出一个符合其特性的表达式。
#include<stdio.h>
void main(void)
{
int i,j,k,l;
char a[4]={'A','B','C','D'};
i=j=k=l=0;
for(;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i!=j)
{
for(k=0;k<4;k++)
{
if(i!=k&&j!=k)
{
for(l=0;l<4;l++)
{
if(l!=i&&l!=j&&l!=k)
{
if((i>k&&j<k)||(j>l&&l>k)) ;
else
{
printf("%c",a[i]);printf(" ");
printf("%c",a[j]);printf(" ");
printf("%c",a[k]);printf(" ");
printf("%c",a[l]);
printf("\n");
}
}
}
}
}
}
}
}
}
zgy231552
2002-05-17
打赏
举报
回复
我看你们都比较轻视这个问题,这个问题的所有可能的出栈可能为:(2n)!/(n+1)!
好像没有一本数据结构书有输出所有的可能序列的算法.
我是这样理解的:每个元素都有两种可能留在堆栈里面或者直接输出.所以可以构造这样一颗二叉树,但是输出的不全,问题就是,在一个元素输出的时候,此时的堆栈也有两种可能....,比较复杂.那位高人写写看 .
huahao0672
2002-05-17
打赏
举报
回复
数据结构的书上这类算法太多了,自已去看一下书吧!
leopro
2002-05-17
打赏
举报
回复
楼上理解错误
设t(i)时刻栈中有k个元素,可能出栈元素个数为m(0<=m<=k)
t(i+1)时刻又进栈一元素,此时栈中元素个数为k-m+1
……
不难
kbsoft
2002-05-17
打赏
举报
回复
如果是按顺序进栈,只能按相反顺序出来
除非你是说有多少种进展可能?
论各种排序
算法
初学
算法
,这里发表一下自己对排序的见解,顺便向大家
求教
如何找一本或者怎么能够学好
算法
,不会忘记,现在好多书只教如何理解发明者发明的代码,代码我们可以看懂,这
不
难
,如何学到这里面的思想呢?学到了思想才能...
算法
工程师过去这一年:理想很丰满,现实很骨感
本文转自100offer微信公众号【导读】人工智能火热的 2017 年,
算法
相关...这不禁使我们疑惑:2017 年,
算法
工程师的求职之路,真的一帆风顺吗?
算法
工程师高薪、热门的背后,又有哪些不为人知的故事?对于2018年,算
deallocate 函数 matlab,fortran编程。
求教
求余函数的
算法
。我认为
求教
求余函数的
算法
。我认为问题详情:program mainimplicit none integer a,b,c a=1 b=5 c=mod(a,b) w回答:同学,你的
算法
没有错误!求余运算中,mod(1,5)是等于1的,因为1/5=0…1所以余数是1,希望你能够采纳!谢谢!...
图解
算法
岗求职实况:理想很丰满,现实很骨感
来源:100offer本文约5000字,建议阅读8分钟。本文通过数据、采访与真实案例,带你走进2017年
算法
岗求职市场的真实现状。人工智能火热的 2017 年,
算法
相关岗位无论...这不禁使我们疑惑:2017 年,
算法
工程师的求职之路
关于连续小波变换的几个问题,
求教
问1: .MATLAB中连续小波变换cwt结果是指a和b都连续变化后的小波系数,wavedec是离散小波变换,是mallat
算法
后的...(因为b一个是连续,一个是不连续的) 答1: 首先应明白连续或不连续多指数学的概念而已,应用中...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章