C语言,关于全排列问题

问题描述:

C语言,关于全排列问题
#include
void swap(int A,int B)
{
\x09int m;
\x09m=A;
\x09A=B;
\x09B=m;
}
int main()
{
\x09int a[10];
\x09int n,i,j,k,l,isgood;
\x09scanf("%d",&n);
\x09for(i=0;i
1个回答 分类:综合 2014-10-28

问题解答:

我来补答
#include<stdio.h>
void swap(int *A,int *B)  // <-- C语言是传值的,*A 才能影响到外部.
{
int m;
m=*A;
*A=*B;
*B=m;
}
int main()
{
int a[10];
int n,i,j,k,l,isgood;
scanf("%d",&n);
for(i=0;i<n;a[i]=i+1,i++);
for(i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
for(i=0,j=0;;){
for(k=n-2,isgood=1;k>=0;k--){
if(a[k]<a[k+1]){
isgood=0;
i=k;
break;
}
}
if(isgood==1) break;
for(l=i;l<n;l++){
for(j=n-1;j>l;j--)
if(a[j]>a[l]) swap(&a[l],&a[j]);//<-- 相应修改.
}
for(l=0;l<n;l++) printf("%d ",a[l]);
printf("\n");
}
return 0;
}
再问: 貌似还存在问题。。。生成不了全排列,还少几行
再答: 这是你的算法有问题。
 
 
展开全文阅读
剩余:2000