1,2,3,4按顺序入栈,出栈顺序随意,列出所有可能情况,这个算法怎么写

乐百川 2014-05-28 11:57:45
这个问题大家应该都知道吧,我想了一节课也没想出来,求助呀
...全文
2027 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
审查之光 2014-07-28
  • 打赏
  • 举报
回复
Catalan式,能求出所有出栈情况的个数,但是不能求出具体情况。用动态规划
lm_whales 2014-06-05
  • 打赏
  • 举报
回复
引用 5 楼 buyong 的回复:
组合数学中什么多项式,好像能解决这个问题
++ 确实可以这样。 另外,估计可能是要你这么做的: 1) 实现栈数据结构; 2)并用实现的栈模拟出栈入栈,并统计所有可能的方法。
勒特一体狗 2014-06-02
  • 打赏
  • 举报
回复
用递归写的
template <typename T>
void StackInOut<T>::simulateStack(std::vector<T>& originData, std::stack<T>& stackData, std::vector<T>& tempData)
{
	if (originData.size() == 0 && stackData.size() == 0)
	{
		this->out_data.push_back(tempData);
		return;
	}
	else if (originData.size() != 0 && stackData.size() == 0)
	{
		T tempT = originData.back();
		originData.pop_back();
		stackData.push(tempT);
		simulateStack(originData, stackData, tempData);
	}
	else if (originData.size() ==0 && stackData.size() != 0)
	{
		tempData.push_back(stackData.top());
		stackData.pop();
		simulateStack(originData, stackData, tempData);
	}
	else
	{
		std::vector<T> tempBranchData = tempData;
		std::vector<T> origionBranchData = originData;
		std::stack<T> stackBranchData = stackData;

		//出栈
		tempData.push_back(stackData.top());
		stackData.pop();
		simulateStack(originData, stackData, tempData);

		//入栈
		T tempT = origionBranchData.back();
		origionBranchData.pop_back();
		stackBranchData.push(tempT);
		simulateStack(origionBranchData, stackBranchData, tempBranchData);
	}
}
乐百川 2014-06-01
  • 打赏
  • 举报
回复
我不懂呀,能不能说得详细点
jmppok 2014-05-29
  • 打赏
  • 举报
回复
FightForProgrammer 2014-05-29
  • 打赏
  • 举报
回复
计算机考研经常出现的题目。其实题目意思是这样的:1,2,3,4,顺序入站,并不要求一次性全部入站,比如1入站,再出站;2,3,入站,3出战;4入站;最后4,2出战,这时候就是:1,3,4,2 情况还有比较多,貌似有个公式的,可以算出各种情况的总数 至于要用算法写出来,模拟入站出站就行啦
majia2011 2014-05-29
  • 打赏
  • 举报
回复
这个题确实比较二,呵呵呵
sniffer12345 2014-05-29
  • 打赏
  • 举报
回复
这就是那什么阿里的面试题是吧? 说实话刚看这题我也搞不懂,进栈1234,出栈不就4321嘛 后来看到有人问才知道,原来它的题意是: 1,2,3,4按顺序入栈,出栈顺序随意,并且在进栈的过程中可以出栈,列出所有可能情况 这就是简单的逻辑题了。。 所以我讨厌这些SB的面试题
buyong 2014-05-29
  • 打赏
  • 举报
回复
组合数学中什么多项式,好像能解决这个问题

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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