我是按照书上写得,不知为何40分
#include<bits/stdc++.h>
using namespace std;
vector<int> chosen;
int a[5001][5001];
int n,m,j=-1;
void calc(int x)
{
if (chosen.size()>m||chosen.size()+(n-x+1)<m)
return;
if (x==n+1)
{
j++;
for (int i=0;i<chosen.size();i++)
a[j][i]=chosen[i];
}
calc(x+1);
chosen.push_back(x);
calc(x+1);
chosen.pop_back();
}
int main()
{
cin>>n>>m;
calc(1);
for (int z=j;z>=0;z--)
{
for (int i=0;i<m;i++)
{
cout<<a[z][i]<<" ";
}
cout<<endl;
}
}