题目链接
题目描述
猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和
现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案
直接深搜,不过通过这个题,我又发现了,原来自己忘记return 是会发生什么的,我倒是明白了,好好学搜索的用意。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[20],n,cnt;
int b[N][11];
void dfs(int step,int X){
if(X+3*(10-(step))<n)return ;
if(X+(10-step)>n)return ;
if(step==10){
if(X==n){
for(int i=0;i<10;i++){
b[cnt][i]=a[i];
}
cnt++;
}
return ;
}
for(int i=1;i<=3;i++){
a[step]=i;
dfs(step+1,X+i);
}
}
int main()
{
scanf("%d",&n);
if(n>30){
printf("0\n");return 0;
}
dfs(0,0);
printf("%d\n",cnt);
for(int i=0;i<cnt;i++){
for(int j=0;j<10;j++){
printf("%d%c",b[i][j],j==9?'\n':' ');
}
}
return 0;
}