/* 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出。 */ #define _CRT_SECURE_NO_WARNINGS //#define HOME #include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #include <locale> #include <cmath> #include <vector> using namespace std; const int INF = 0x3f3f3f3f; const int MaxN = 15; int N, k; vector<int> arr(MaxN, 0); vector<vector<int> > combine; void dfs(int num, int pos) { if (num == k) { combine.push_back(arr); return; } for (int i = pos; i < N; ++i) { arr[num] = i; dfs(num + 1, i + 1); } } int main() { #ifdef HOME freopen("in", "r", stdin); //freopen("out", "w", stdout); #endif int T; cin >> T; while (T--) { cin >> N >> k; dfs(0, 0); for (int i = 0; i < combine.size(); ++i) { for (int j = 0; j < k; ++j) { cout << combine[i][j] + 1; if (j != (k - 1)) { cout << ' '; } } cout << endl; } combine.clear(); } #ifdef HOME cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl; #endif return 0; }