【洛谷P2660烤鸡】
题目背景
猪猪hanke得到了一只鸡
题目描述
猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和
现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案。
这道题本来应应用递归算法,但是由于本蒟蒻对递归的掌握不熟,加之本题的思维非常水,只需要暴力模拟,就能把题目解出;
下面是对本题的思维方法总结:
1:对于先输出后循环的题目,可以先用循环算出本题中的方案总数,再循环一遍输出搭配方案;
2:一定要看好本题的输出要求,每个配料质量之间有空格,不要漏掉!!!
程序如下:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int n,s,a,b,c,d,e,f,g,h,i,j;
cin>>n;
for(a=1;a<=3;a++){
for(b=1;b<=3;b++){
for(c=1;c<=3;c++){
for(d=1;d<=3;d++){
for(e=1;e<=3;e++){
for(f=1;f<=3;f++){
for(g=1;g<=3;g++){
for(h=1;h<=3;h++){
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
if(a+b+c+d+e+f+g+h+i+j==n) {
s++;}}}}}}}}}}}
cout<<s<<endl;
for(a=1;a<=3;a++){
for(b=1;b<=3;b++){
for(c=1;c<=3;c++){
for(d=1;d<=3;d++){
for(e=1;e<=3;e++){
for(f=1;f<=3;f++){
for(g=1;g<=3;g++){
for(h=1;h<=3;h++){
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
if(a+b+c+d+e+f+g+h+i+j==n) {cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<" "<<j<<" "<<endl;
s++;}}}}}}}}}}}
}//beautiful!!!