#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 1005;
int num[ maxn ];
int main(){
	int n;
	while( cin >> n ){
		if( !n )
			break;
		for( int i = 0; i < n; ++i ){
			cin >> num[ i ];
		}
		for( int i = 0; i < n; ++i ){
			for( int j = i + 1; j < n; ++j ){
				for( int k = j + 1; k < n; ++k ){
					for( int x = k + 1; x < n; ++x ){
						for( int y = x + 1; y < n; ++y ){
							for( int z = y + 1; z < n; ++z ){
								cout << num[ i ] << " " << num[ j ] << " " << num[ k ] << " " << num[ x ] << " " << num[ y ] << " " << num[ z ] << endl;
							}
						}
					}
				}
			}
		}
		cout << endl;
	}	
return 0;
}
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 1005;
int num[ maxn ], temp[ maxn ], n;
void dfs( int start, int end ){
	if( start > 6 ){
		for( int i = 1; i <= 5; ++i ){
			cout << num[ i ] << " "; 
		}
		cout << num[ 6 ] << endl;
	}
	else{
		for( int i = end; i < n - ( 6 - start ) + 1; ++i ){
			num[ start ] = temp[ i ];
			dfs( start + 1, i + 1 );
		}
	}
}
int main(){
	while( cin >> n ){
		if( !n )
			break;
		for( int i = 1; i <= n; ++i ){
			cin >> temp[ i ];
		}
		dfs( 1, 1 );
		cout << endl;
	}
return 0;
}
原文:http://blog.csdn.net/bo_jwolf/article/details/18851445