社区
C语言
帖子详情
一个简单的问题?
giantzz
2002-03-18 05:57:53
如何用递归实现n个元素所有的排列方式并打印出来?
...全文
51
9
打赏
收藏
一个简单的问题?
如何用递归实现n个元素所有的排列方式并打印出来?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fangrk
2002-03-20
打赏
举报
回复
http://www.csdn.net/Expert/TopicView1.asp?id=562179
ygd
2002-03-20
打赏
举报
回复
#include <iostream.h>
#include <conio.h>
#define size 50
//////////////////////////////////////////
int array[size][size]; //全局变量,array用来表示所求矩阵.
int num=0; //所有拉丁方矩阵的个数
int flag=1; //打印标志位,为1则打印。
void swap(int &a,int &b); //交换a,b
void setArray(int n); //初始化二维数组
void perm(int *arr,int k,int m); //对数组arr,从下标k到m的元素全排列
//////////////////////////////////////////////
void swap(int &a,int &b)
{
int temp=a;a=b;b=temp;
}
//////////////////////////////////////////////
void perm(int *arr,int k,int n)
{
if(k>=n)
{
num++;
if(flag==1)
{
cout<<"press y to print , press n to continue."<<endl;
cout<<endl;
if (getch()=='n') flag=0;
}
if(flag==1)
{
cout<<"-----------------------------------------\n";
cout<<num<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<array[arr[i]-1][j]<<" ";
cout<<endl;
}
}
}
else for(int i=k;i<n;i++)
{
swap(arr[k],arr[i]);
perm(arr,k+1,n);
swap(arr[k],arr[i]);
}
}
////////////////////////////////////////////////
void setArray(int n)
{
int i,j;
for(i=0;i<n;i++)
{
array[0][i]=i+1;
}
for(i=1;i<n;i++)
{
for(j=0;j<n-1;j++)
array[i][j]=array[i-1][j+1];
array[i][n-1]=array[i][0]-1;
}
}
////////////////////////////////////////////////
void main()
{
int i,j,k;
//int array[size][size]
int arr[size];
cout<<"Input the size of array:";
int n;
cin>>n;
for(i=0;i<n;i++)
{
arr[i]=i+1;
}
setArray(n);
perm(arr,0,n);
cout<<"The total number of the array is "<<num<<endl;
getch();
}
iamknight
2002-03-20
打赏
举报
回复
就是,用递归解决,对效率就不可能有太高的要求了。
giantzz
2002-03-20
打赏
举报
回复
帮忙用c描述一下!!!
giantzz
2002-03-19
打赏
举报
回复
dd
neccui
2002-03-18
打赏
举报
回复
否则什么?
这个问题不可能高效的了。
giantzz
2002-03-18
打赏
举报
回复
请用C语言描述,要高效(否则...)
Cauty45
2002-03-18
打赏
举报
回复
void f(int a[], int flag[],int n)
{
if(n==1){
out a[i] where flag[i]==1;
return;
}
for(每一个flag[i]==1 的i){
copy flag[]==>flag1[];
flag1[i]=0;
f(a,flag1,n-1);
}
}
void main()
{
int a[]={1,2,3,4,5};
int flag[]={1,1,1,1,1};
f(a,flag,5);
}
Cauty45
2002-03-18
打赏
举报
回复
void f(int a[], int flag[],int n)
{
if(n==1){
out a[i] where flag[i]==1;
}
for(每一个flag[i]==1 的i){
copy flag[]==>flag1[];
flag1[i]=0;
f(a,flag1,n-1);
}
}
C语言定义了
一个
结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配
问题
?
C语言定义了
一个
结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配
问题
?
问题
1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的。
问题
2:给结构体变量分配之后,是否还要给每个成员分配,还是只给不能确定大小的成员分配?
问题
3:如果是要每个成员分配内存,那么释放的时候是不是每个成员都要单独释放?指针加一之后,又怎么做? C\C++中结构体变量与结构体指针内存分配
问题
?...
什么叫一致性哈希,通常用来解决什么
问题
?
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见
问题
】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【 什么叫一致性哈希,通常用来解决什么
问题
?】 【修真院Java小课堂】什么叫一致性哈希,通常用来解决什么
问题
? 大家好,我是IT修真院北京分院一枚正直纯洁...
如何提
问题
?
在任何场合,提
问题
是一种艺术。
问题
提得有水平,就能加强互动,促进交流,获得收益;反之,则一定收效甚微,甚至有相反的效果。举
一个
最
简单
的例子,你的一位朋友得了重病,危在旦夕,你会焦急地询问其亲属。倘若你问:“他的病越来越重了吧?”甚至问:“他快死了吗?”病家听后必定火冒三丈。当然,谁也不会这么愚蠢地设问,一般会问:“他身体好些了吗?”而在学术研讨中,的确有些年青朋友不会提
问题
。近期参加所里的
SpringBoot的约定优于配置,SpringBoot解决了哪些
问题
?
Build Anything with Spring Boot: Spring Boot is the starting point forbuilding all spring-based applications. Spring Boot is designed to get you upand running as quickly as possible,with minimal upfront configuration ofSpring.
用递归法:设计算法求解汉诺塔
问题
,并编程实现。 (1) Hanoi(汉诺)塔
问题
分析 这是
一个
古典的数学
问题
,是
一个
用递归方法解题的典型例子。
问题
是这样的:古代有
一个
梵塔,塔内有3个座 A,B,C
用 递归法:设计算法求解汉诺塔
问题
,并编程实现。 (1) Hanoi(汉诺)塔
问题
分析 这是
一个
古典的数学
问题
,是
一个
用递归方法解题的典型例子。
问题
是这样的:古代有
一个
梵塔,塔内有3个座 A,B,C。开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有
一个
老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动
一个
盘子,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章