C++请哪位大神解释下下面这个函数是怎么运行的?程序在补充 140

#include<iostream>#include<stack>#include<vector>usingnamespacestd;intnumber=0;voidfu... #include <iostream>
#include <stack>
#include <vector>
using namespace std;

int number=0;
void func(vector<char>kind,int count[],int n,char A[])
{
if(count[0]>=1)
{
kind.push_back(1);
count[0]--;
func(kind,count,n,A);
count[0]++;
kind.pop_back();
}
if((count[1]>=1) && (count[1]>count[0]))
{
kind.push_back(0);
count[1]--;
func(kind,count,n,A);
count[1]++;
kind.pop_back();
}
if(kind.size()==2*n)
{
vector<char>::iterator iter;
stack<char>stk;
int j=0;
for(iter=kind.begin();iter!=kind.end();iter++)
{
//cout<<(*iter)<<" ";
if(1==(*iter))
{
stk.push(A[j]);
j++;
}
else
{
cout<<stk.top()<<" ";
stk.pop();
}
}
number++;
cout<<endl;
}
}

int main()
{
int n,i;
cout << "please input the number:" << endl;
cin>>n;
char *A=new char[n];
cout << "please input the push sequence:" << endl;
for(i=0;i<n;i++)
{
cin>>A[i];
}
int count[2]={n-1,n};
vector<char>kind;
kind.push_back(1);
cout<<"the result is:"<<endl;
func(kind,count,n,A);
cout<<"total:"<<number<<endl;
return 0;
}
//当输入N=3 ,输入A,B,C时候 详细解释下func函数是怎么运作的?
利用vector容器编写出栈次序的各种情况。和卡特兰数有关。问题转换为:设有N个元素顺序进栈,那么出栈顺序可能有多少种?写出每种次序。已经提高悬赏。
用断点和单步调试来着。不会看啊
展开
 我来答
侯奇1993
2012-06-20 · 超过20用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:67.1万
展开全部
通过func的递归,在kind中交替插入0和1(前两个if语句实现),并通过不同的0和1顺序实现不同的输出(最后一个if语句实现)。
追问
如果你能帮我分析下
当输入N=3 ,输入A,B,C时候 详细解释下func函数是怎么运作的?
我是可以提高悬赏的
doom_ood
2012-07-08 · TA获得超过202个赞
知道小有建树答主
回答量:539
采纳率:25%
帮助的人:328万
展开全部
void func(vector<char>kind,int count[],int n,char A[])中的A是用户输入的数据,n是数据的数目,kind用来保存输出样式(0表示弹出,1表示压入),count用来限定kind中的输出样式合法(表示了kind中可以压入的0的数量和可以压入的1的数量,避免堆栈空栈弹出)。
func中的前两个if用来构造这样的kind,第三个if就是判断当kind构造完成了,就根据kind来入站出站就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuaninv
2012-07-17 · TA获得超过645个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:348万
展开全部
画流程图,打草稿,其他没什么特别技巧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaot1021
2012-06-27 · TA获得超过326个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:234万
展开全部
这个不是三言二语能说的清啊,就跟绕口令是的。你还要拿个笔在纸上记着才容易理解。
追问
所以悬赏80分啊 三言两语能说清楚的就没悬赏分了  呵呵
追答
我说你这样直接说真的是很难讲清楚。你也知道,程序这种东西理起来特绕。你这个还是嵌套的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式