#include <bits/stdc++.h> using namespace std; const int N = 1000; vector <int> vec; int main(){ long long n, k, p; cin >> n >> k >> p; for(int i = 0; i < n; i++){ vec.push_back(i + 1); } int result = 0; do { vector <int> akt = vec, next; int x = 0; while(akt.size() > 1){ if(akt[0] > akt[1])next.push_back(akt[0]); for(int i = 1; i < akt.size() - 1; i++){ if(akt[i] < akt[i - 1] || akt[i] < akt[i + 1]){}else{next.push_back(akt[i]);} } if(akt[akt.size() - 1] > akt[akt.size() - 2])next.push_back(akt[akt.size() - 1]); akt = next; next.clear(); x++; } // for(int i = 0; i < vec.size(); i++){ // cout << vec[i] << " "; // } if(x == k)result++; //cout << result << "\n"; } while ( next_permutation ( vec.begin() , vec.end()) ); cout << result << "\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <bits/stdc++.h> using namespace std; const int N = 1000; vector <int> vec; int main(){ long long n, k, p; cin >> n >> k >> p; for(int i = 0; i < n; i++){ vec.push_back(i + 1); } int result = 0; do { vector <int> akt = vec, next; int x = 0; while(akt.size() > 1){ if(akt[0] > akt[1])next.push_back(akt[0]); for(int i = 1; i < akt.size() - 1; i++){ if(akt[i] < akt[i - 1] || akt[i] < akt[i + 1]){}else{next.push_back(akt[i]);} } if(akt[akt.size() - 1] > akt[akt.size() - 2])next.push_back(akt[akt.size() - 1]); akt = next; next.clear(); x++; } // for(int i = 0; i < vec.size(); i++){ // cout << vec[i] << " "; // } if(x == k)result++; //cout << result << "\n"; } while ( next_permutation ( vec.begin() , vec.end()) ); cout << result << "\n"; } |