华师一附中OI组

标题: P2089 烤鸡 [打印本页]

作者: admin    时间: 2018-5-13 16:42
标题: P2089 烤鸡
https://www.luogu.org/problemnew/show/P2089
题目描述
猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和

现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案

输入输出格式
输入格式:
一行,n<=5000

输出格式:
第一行,方案总数

第二行至结束,10个数,表示每种配料所放的质量

按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个“0”

输入输出样例
输入样例#1:
11
输出样例#1:
10
1 1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 2 1
1 1 1 1 1 1 1 2 1 1
1 1 1 1 1 1 2 1 1 1
1 1 1 1 1 2 1 1 1 1
1 1 1 1 2 1 1 1 1 1
1 1 1 2 1 1 1 1 1 1
1 1 2 1 1 1 1 1 1 1
1 2 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
作者: 吴语林    时间: 2018-5-14 06:54
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. using namespace std;
  6. int n,cun[15],shu[100000][15],all=0;
  7. void dfs(int cen,int x)
  8. {
  9.         if(cen==10)
  10.         {
  11.                 if(x==0)
  12.                 {
  13.                         all++;
  14.                         for(int i=1;i<=10;i++) shu[all][i]=cun[i];
  15.                 }
  16.                 return;
  17.         }
  18.         for(int i=1;i<=x-9+cen&&i<=3;i++)
  19.                 cun[cen+1]=i,dfs(cen+1,x-i);
  20. }
  21. int main()
  22. {
  23.         scanf("%d",&n);
  24.         if(n>=10&&n<=30)
  25.                 dfs(0,n);
  26.         printf("%d\n",all);
  27.         for(int i=1;i<=all;i++)
  28.         {
  29.                 for(int j=1;j<=10;j++)
  30.                         printf("%d ",shu[i][j]);
  31.                 printf("\n");
  32.         }
  33.         return 0;
  34. }
复制代码

作者: admin    时间: 2018-5-14 12:18
第19行这样的句子千万小心,到底是先执行左边的还是先执行右边的呢?
为什么你们好像都不喜欢用 if  else 却都喜欢程序之间去renturn 呢?
作者: 吴语林    时间: 2018-5-14 12:48
标题: 代码不知为什么上传不了,改正了
本帖最后由 吴语林 于 2018-5-14 12:54 编辑

[attach]66[/attach]
作者: 倚窗倾听风吹雨    时间: 2018-7-7 14:41
直接暴力枚举,大概两万多次循环就搞定了,不会超时;
  1. #include<iostream>
  2. using namespace std;
  3. int i,j,k,l,m,n,o,p,q,r,s;
  4. int a[60000][11],ans;
  5. int main()
  6. {
  7.     cin>>s;
  8.     for(i=1; i<=3; i++)
  9.     for(j=1; j<=3; j++)
  10.     for(k=1; k<=3; k++)
  11.     for(l=1; l<=3; l++)
  12.     for(m=1; m<=3; m++)
  13.     for(n=1; n<=3; n++)
  14.     for(o=1; o<=3; o++)
  15.     for(p=1; p<=3; p++)
  16.     for(q=1; q<=3; q++)
  17.     {
  18.         r=s-i-j-k-l-m-n-p-o-q;
  19.         if(1<=r && r<=3)
  20.         {
  21.             ans++;
  22.             a[ans][1]=i;
  23.             a[ans][2]=j;
  24.             a[ans][3]=k;
  25.             a[ans][4]=l;
  26.             a[ans][5]=m;
  27.             a[ans][6]=n;
  28.             a[ans][7]=o;
  29.             a[ans][8]=p;
  30.             a[ans][9]=q;
  31.             a[ans][10]=r;
  32.         }
  33.     }
  34.     cout<<ans<<endl;
  35.     for(i=1; i<=ans; i++)
  36.     {
  37.         for(j=1; j<=10; j++)
  38.             cout<<a[i][j]<<" ";
  39.         cout<<endl;
  40.     }
  41. }
复制代码

作者: universehyf    时间: 2018-7-8 15:17
标题: 大约有五万多次哟
本帖最后由 universehyf 于 2018-7-8 15:18 编辑
  1. 大约有五万多次哟
复制代码

作者: universehyf    时间: 2018-7-8 15:19
  1. #include<iostream>
  2. using namespace std;
  3. const int m=60000;
  4. int a[m][10],c[10];
  5. int s,i,ss,j,cc,k;
  6. bool b[m];
  7. int main()
  8. {
  9.     cin>>s;
  10.     for(c[0]=1;c[0]<=3;c[0]++)///连续的for可用递归优化代码长度
  11.     for(c[1]=1;c[1]<=3;c[1]++)
  12.     for(c[2]=1;c[2]<=3;c[2]++)
  13.     for(c[3]=1;c[3]<=3;c[3]++)
  14.     for(c[4]=1;c[4]<=3;c[4]++)
  15.     for(c[5]=1;c[5]<=3;c[5]++)
  16.     for(c[6]=1;c[6]<=3;c[6]++)
  17.     for(c[7]=1;c[7]<=3;c[7]++)
  18.     for(c[8]=1;c[8]<=3;c[8]++)
  19.     for(c[9]=1;c[9]<=3;c[9]++)
  20.     {
  21.         ss=0;
  22.         for(j=0;j<=9;j++) ss=ss+c[j];
  23.         if(ss==s){b[i]=1;cc++;}
  24.         for(j=0;j<=9;j++) a[i][j]=c[j];
  25.         i++;
  26.     }
  27.     cout<<cc<<endl;
  28.     for(j=0;j<=i-1;j++)
  29.         if(b[j])
  30.         {
  31.             for(k=0;k<=9;k++) cout<<a[j][k]<<" ";
  32.             cout<<endl;
  33.         }
  34.     return 0;
  35. }
复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2