题目描述
猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和
现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案
输入输出格式
输入格式:
一行,n<=5000
输出格式:
第一行,方案总数
第二行至结束,10个数,表示每种配料所放的质量
按字典序排列。
如果没有符合要求的方法,就只要在第一行输出一个“0”
#include<iostream>
using namespace std;
int n,kind=0,m1[10000][10],m2[10];
void peiliao(int total,int a){
if (a==10){
if (total==n) {
for (int j=0;j<10;j++) m1[kind][j]=m2[j];//符合要求存起来~~
kind++;
}
}
else if (total>=n) ;//小小优化一下
else
for (int i=1;i<=3;i++){
m2[a]=i;
peiliao(total+i,a+1);//其实这和十连for没什么区别。。。
}
}
int main(){
cin>>n;
peiliao(0,0);
cout<<kind<<endl;
for (int j=0;j<kind;j++){
for (int i=0;i<10;i++) cout<<m1[j][i]<<" "; //大家一定要记得打空格...
cout<<endl;
}
return 0;
}