题意给你n个数,然后用n个数构造k个不同的序列,每一个序列的数不能用两次,每个数都不同,n小于50,k<=((n+1)*n/2)
题解是我傻逼了。。。。。这个题。。。。。。我艹。。。。。
这么回事啊,就是它选取前x个数剩下的数随便选一个就行了。这种有(n - x)种方法。如此做来就有了那个数据范围
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int a[100];
bool cmp(int a , int b)
{
return a > b;
}
int main()
{
int n , k , num = 0;
scanf("%d %d",&n , &k);
for(int i = 1 ; i <= n ; i++) scanf("%d",&a[i]);
sort(a + 1 , a + 1 + n , cmp);
int nl = 0;
while(num < k){
for(int i = ++nl ; i <= n ; i++){
printf("%d ",nl);
for(int j = 1 ; j < nl ; j++) printf("%d ",a[j]);
printf("%d\n",a[i]);
num++;
if(num == k) break;
}
}
return 0;
}