数据结构作业题,球球大佬,关于一个用堆栈消除从n个数取m个数的递归的题目
数据结构作业题
这是个递归算法(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
这是个递归算法(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
...全文
相关推荐
递归子程序计算ackermann函数ACK(m,n)
试编写一段递归子程序计算ackermann函数ACK(m,n)。对于m≥0和n≥0的ACK(m,n)函数定义如下: ACK(0,n)=n+1 ACK(m,0)=ACK(m-1,1) ACK(m,n)=ACK(m-1,ACK(m,n-1)) 程序要求: ⑴ m、n在主程序从键盘输入,输入错误显示“m和n输入错误”。 ⑵ 显示计算结果。
数据结构 球钟问题
用c编写 数据结构中的球钟问题 实现用球表示时间 有一分球 五分球 一个小时球 实现00:00~11:59的表示
c++用递归的方法编写函数求Fibonacci级数_递归_
利用递归算法计算Fibnacci级数,基于C++语言
西南交通大学数据结构实验报告黑白棋.doxc递归算法设计及堆栈消除递归
1.递归算法设计 黑白子交换。有三个白子和三个黑子如下图布置:(-表示一个空格) ○ ○ ○ - ● ● ● 游戏的目的是用多少的步数将上图中白子和黑子的位置进行交换: ● ● ● - ○ ○ ○ 游戏的规则是:一次只能移动一个棋子;棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。请用计算机实现上述游戏。
利用数据结构堆栈求解迷宫
数据结构中的堆栈有着广泛的应用,思维严密,仅供大家参考。


新手乐园
