- #include<stdio.h>
-
#define MAX 10
-
int delpo(int * po);
-
int rm(int * p ,int i, int n);
-
int cmb(int * pi,int * po, int n);
-
int myprintf(int * p);
-
int add(int * p, int d);
-
int ins(int *p , int i , int d,int n);
-
int main(){
-
printf("Enter n:");
-
int n;
-
scanf("%d",&n);
-
int p[MAX];
-
int po[MAX];
-
for(int j = 0; j < MAX; j++){
-
po[j] = 0;
-
}
-
for(int i = 0; i < n; i ++){
-
p[i] = i + 1;
-
}
-
cmb(p,po,n);
-
return 0;
-
}
-
int cmb(int * pi,int * po, int n){
-
if(n == 1){
-
add(po,pi[0]);
-
myprintf(po);
-
delpo(po);
-
return 0;
-
}else{
-
for(int i = 0;i < n; i++){
-
/* printf("%d ",pi[i]);
-
int t = rm(pi,i,n);
-
cmb(pi,n - 1);
-
ins(pi,i,t,n);
-
*/
-
add(po,pi[i]);
-
int t = rm(pi,i,n);
-
cmb(pi,po,n - 1);
-
delpo(po);
-
ins(pi,i,t,n);
-
-
}
-
return 0;
-
}
-
}
-
int add(int * p, int d){
-
int i = 0;
-
while(p[i] != 0){
-
i++;
-
}
-
p[i] = d;
-
return 0;
-
-
}
-
int myprintf(int * p){
-
int i = 0;
-
do{
-
printf("%d ",p[i]);
-
}while(p[++i] != 0);
-
printf("\n");
-
return 0;
-
}
-
int rm(int * p ,int i, int n){
-
int t = p[i];
-
for(int j = i; j < n - 1; j++){
-
p[j] = p[j + 1];
-
}
-
return t;
-
}
-
int delpo(int * po){
-
int i = 0;
-
while(po[i] != 0){
-
i ++;
-
}
-
po[i - 1] = 0;
-
return 0;
-
}
-
int ins(int *p , int i , int d,int n){
-
for(int j = n; j >=i; j--){
-
p[j+1] = p[j];
-
}
-
-
p[i] = d;
-
return 0;
- }