http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1089
递归实现的排列组合。
code:
#include<cstdio>
int data[20] ;
int ans[6], n ;
void work(int diex, int aiex){
int i ;
if(aiex==6){
for(i=0; i<5; i++)
printf("%d ", ans[i]) ;
printf("%d\n", ans[i]) ;
return ;
}
for(i=diex; i<n; i++){
ans[aiex] = data[i] ;
work(i+1, aiex+1) ;
}
}
int main(){
int i, j=0 ;
while(~scanf("%d", &n)&&n){
if(j) printf("\n") ;
j ++ ;
for(i=0; i<n; i++)
scanf("%d", &data[i]) ;
work(0, 0) ;
}
return 0 ;}
int data[20] ;
int ans[6], n ;
void work(int diex, int aiex){
int i ;
if(aiex==6){
for(i=0; i<5; i++)
printf("%d ", ans[i]) ;
printf("%d\n", ans[i]) ;
return ;
}
for(i=diex; i<n; i++){
ans[aiex] = data[i] ;
work(i+1, aiex+1) ;
}
}
int main(){
int i, j=0 ;
while(~scanf("%d", &n)&&n){
if(j) printf("\n") ;
j ++ ;
for(i=0; i<n; i++)
scanf("%d", &data[i]) ;
work(0, 0) ;
}
return 0 ;}