0
点赞
收藏
分享

微信扫一扫

全排列和汉诺塔


 



         全排列问题这个是用递归实现的

          

#include<stdio.h>

int cout=1;
int n=0;

void print(int *a)
{
int i=0;
printf("%2d ",cout++);

for(i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
}

void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}

void allsort(int *a,int n)
{
if(n==1)
print(a);
else
{
int i;
for(i=0;i<n;i++)
{
swap(a[n-1],a[i]);
allsort(a,n-1);
swap(a[n-1],a[i]);
}
}

}
int main()
{
int a[4]={1,2,3,4};
n=4;
allsort(a,n);

return 0;

}

    汉诺塔

  

#include<iostream>

using namespace std;

void hanoi(int n,char a,char b,char c)
{
if(n>0)
{
hanoi(n-1,a,c,b);
cout<<a<<"-"<<c<<endl;
hanoi(n-1,c,b,a);
}

}
int main()
{
hanoi(3,'a','b','c');
return 0;
}

 

 

 

 

  

举报

相关推荐

0 条评论