#include #include const int maxx = 100; int A[maxx], Temp[maxx]; int number, size; int index, inserted_number_position; void swap ( int &r, int &c) { int temp = r; r = c; c = temp; } void insert ( int A[], int& size, int index, int inserted_number_position ) { for ( int i = size; i > index; i--) { A[i] = A[i-1]; } A[index] = inserted_number_position; size++; } void print() { for ( int x = 0; x < number; x++ ) { cout << A[x] << setw(3); } cout << endl; cout << "----------------------------------------" << endl; } void initialization() { for ( int x = 0; x < size; x++) A[x] = 0; for ( int x = 0; x < 3; x++ ) A[x] = x+1; } void transform() { for ( int x = 0; x < number; x++ ) Temp[x] = A[x]; } void back_transform() { for ( int x = 0; x < number; x++ ) A[x] = Temp[x]; } void recursive_selection ( int new_num ) { int temp_size = new_num; if ( new_num > number ) { print(); cin.get(); } else { transform(); insert ( A, temp_size, new_num - 1, new_num ); for ( int i = new_num - 1; i > 0; i-- ) { recursive_selection ( new_num + 1 ); swap ( A[i], A[i-1] ); } back_transform(); } } void main() { cout << " Enter a number of people are placed around a round-table: "; cin >> number; initialization(); if ( number <= 3 ) { for ( int x = 0; x < number; x++ ) { cout << A[x] << setw(4); } } else { cout << "number is " << number << endl; recursive_selection (4); } }