#include <iostream> using namespace std; void dlina(int n, int k){ for(int i = k +1; i <= n; ++i){ cout << k << " " << i << endl; } dlina(n,k + 1); } int main() { int k, n; cin >> n >> k; dlina(n, k - 1); } C #include <iostream> using namespace std; void dlina(int n, int k){ for(int i = k +1; i <= n; ++i){ cout << k << " " << i << endl; } dlina(n,k + 1); } int main() { int k, n; cin >> n >> k; dlina(n, k - 1); } Везде показывает что тайм лимитед. Вроде как рекурсивно. Спасибо, задачку если что нашел на просторах интернета. условие что подаются два числа. и нужно вывести последовательность длиной второго числа из чисел от 1-первого числа спасибо
vtlstolyarov, при вводе 5 2 программа должна выводить 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5 а при вводе 5 3 123 124 125 134 135 145 234 235 245 345
impelix, как-то так? #include <iostream> #include <vector> using namespace std; void generate(vector<int> &prefix, int next, int k, int n) { if (prefix.size() < n) { for (auto i = next; i <= k - n + prefix.size() + 1; i++){ prefix.push_back(i); generate(prefix, i + 1, k, n); prefix.pop_back(); } } else { for (auto i = prefix.begin(); i != prefix.end(); i++) cout << *i << " "; cout << endl; } } int main() { int k, n; cin >> k >> n; vector<int> prefix; generate(prefix, 1, k, n); } C #include <iostream> #include <vector> using namespace std; void generate(vector<int> &prefix, int next, int k, int n) { if (prefix.size() < n) { for (auto i = next; i <= k - n + prefix.size() + 1; i++){ prefix.push_back(i); generate(prefix, i + 1, k, n); prefix.pop_back(); } } else { for (auto i = prefix.begin(); i != prefix.end(); i++) cout << *i << " "; cout << endl; } } int main() { int k, n; cin >> k >> n; vector<int> prefix; generate(prefix, 1, k, n); }