数据结构作业题,球球大佬,关于一个用堆栈消除从n个数取m个数的递归的题目

茅蒐Rubia 茅蒐Rubia 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
数据结构作业题
这是个递归算法(perm函数)用来生成n中取m的排列(数字可以重复但排序不重复)。请用堆栈消除递归
#include
void perm(int flag[],int a[], int k, int n, int m)
{ int i;
if(k==m)
{ for(i=0;i<m;i++) printf("%d ",a[i]);
printf("\n");
return;
}
for(i=0;i<n;i++)
if(flag[i]==0)
{ a[k]=i+1;
flag[i]=1;
perm(flag,a,k+1,n,m);
flag[i]=0;
}
}
int main() {
const int n=3,m=2;
int flag[n],a[m],i;
for(i=0;i<n;i++) flag[i]=0;
perm(flag,a,0,n,m);
return 0;
}
如:n=3, m=2,则输出为:
1 2
1 3
2 1
2 3
3 1
3 2
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
茅蒐Rubia
新手乐园 33,315 成员 41,769 内容