C语言,关于全排列问题#includevoid 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
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/09 04:51:53
C语言,关于全排列问题#includevoid 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
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
C语言,关于全排列问题#includevoid 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
#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;
}