If you aren't particularly worried about speed and space issues, the simplest way to do it would be to use recursion.
Basically something on the order of this pseudo-code:
print_all_combinations_of( input_array ) {
size = input_array.count
if ( size == 1 ) {
print input_array[0] + "\n"
} else {
for ( i = 0 ; i < size; i++ ) {
print input_array[i]
array_without_element_i = new array( input_array )
array_without_element_i.remove_element_at(i)
print_all_combinations_of ( array_without_element_i )
}
}
}