这是个递归算法(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
求助:一个简单(?)的作业题:用来生成n中取m无重复全排列。请用堆栈消除递归
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2019-10-08 17:53关注
和 https://ask.csdn.net/questions/755200 类似的问题,参考下
主要就是改造参数、局部变量和返回地址的存储、初始化和恢复。解决 无用评论 打赏 举报
悬赏问题
- ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
- ¥15 gradio的web端页面格式不对的问题
- ¥15 求大家看看Nonce如何配置
- ¥15 Matlab怎么求解含参的二重积分?
- ¥15 苹果手机突然连不上wifi了?
- ¥15 cgictest.cgi文件无法访问
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?