#include <iostream> using namespace std; int s[] = {1,2,3,4,5,6,7,8,9}; const int N = sizeof(s)/sizeof(int); int t[N]; int num; void p(void); void f(void); void swap(int *a, int *b); int main(int argc, char *argv[]) { for (int a=0; a < 100; ++a) f(); cout << num << endl; return 0; } void f() { int a=0; while(a != -1) { if (a == N) { //p(); a--; num++; } else { while (a+t[a] == N) { t[a] = 0; a--; } if (a != -1) { if (a != a+t[a]) { swap(&s[a], &s[a+t[a]-1]); } swap(&s[a], &s[a+t[a]]); t[a]++; a++; } } } } void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } void p() { for (int i=0; i < N; ++i) { cout << s[i] << " "; } cout << endl; }