跑个案例看看结果就知道了:8 2 3
题目给的数据是 n,k,d
相当于高中数学题:k个人中选择d个人排成一列,有多少种不同的方案数,列出其中n中就可以了。
#include<iostream>
#include<algorithm>
#include<string>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
#define ll __int64
int mp[][]; int main(){
int n,k,d;
scanf("%d%d%d",&n,&k,&d); int ddd=d,kkk=; int flag=;
while(ddd--)
{
kkk=kkk*k;
if(kkk>=n)flag=;
} if(flag==)
printf("-1\n");
else { int kk,num=,kkk=;
for(int i=;i<d;i++)
{
kk=;
for(int j=;j<n;j++)
{
mp[i][j]=kk;
if(num==kkk)kk++,kkk=;
kkk++;
if(kk>k)kk=kk-k;
}
num=num*k;
} for(int i=;i<d;i++)
{
int yi=;
for(int j=;j<n;j++)
{
if(yi)printf(" ");yi=;
printf("%d",mp[i][j]);
}
puts("");
}
}
return ;
}