就是把10种配料换成了K种,输入K,N,其他一样
本人的代码(显然有错):
#include<bits/stdc++.h>
using namespace std;
int n,k,cnt=1;
int print[10000][10000];
void dfs(int step,int now,int pnow,int yu){
if(step>k||now>n) return;
if(step==k){
if(yu+1>3)return;
print[cnt++][k]=yu+1;
}
if(n-now<(k-step)) return;
for(int i = 1; i<=3; i++){
print[cnt][step]=i;
dfs(step+1,now+i,i,n-now-i);
}
return;
}
int main(){
cin>>k>>n;
if(k*3<n){puts("0");return 0;}
for(int i = 1; i<=3; i++)
dfs(1,i,1,n-i-1);
cout<<cnt-2<<'\n';
for(int i = 1; i<cnt-1; i++){
for(int j = 1; j<=k; j++){
if(!print[i][j]) print[i][j]=print[i-1][j];
cout<<print[i][j]<<" ";
}
puts("");
}
return 0;
}