(综合)P2089 烤鸡

题解:

#include<stdio.h>
int n,ret=0,a[10000][10];
int p(int c,int s){
 int i;
 for(i=1;i<=3;i++){
   s+=i;
   if(c==9){
     if(s==n){
       a[ret][c]=i;
       ret++;
       return 1;
     }else{
      s-=i;
       continue;
     }
   }else{
     if(p(c+1,s)){
      a[ret-1][c]=i;
      return 1;
    }
  }
 
 }
}
int main()
{
 int i,j;
 scanf("%d",&n);
 if(n>30&&n<10){
  printf("0");
 }else{
  int b=p(0,0);
 
 }
 printf("%d\n",ret);
 for(i=0;i<ret;i++){
  for(j=0;j<10;j++){
   printf("%d ",a[i][j]);
  }
  printf("\n");
 }
 return 0;
}

可惜的是这个递归出来只有一个解,之后将返回值去掉,进入函数时存放数据,满足一次就拷贝数据至下一行数组中,继续循环。这样弄有点繁琐。

简单点的话,其实可以用一个一维数组来测试组合,符合时就将这组数拷贝到二维数组中。

m1[10000][10],m2[10];

void p(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没什么区别。。。
      }
}

网上说正解是搜索,歪解是枚举,枚举两遍即可完成,说实话咱也想过要枚举,一是觉得有点简单,二是觉得可能会算法复杂度太高,结果是不高。。。

原文地址:https://www.cnblogs.com/lijiahui-123/p/12243524.html

时间: 2024-12-15 19:12:07

(综合)P2089 烤鸡的相关文章

洛谷 P2089 烤鸡

P2089 烤鸡 题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方案总数 第二行至结束,10个数,表示每种配料所放的质量 按字典序排列. 如果没有符合要求的方

洛谷 P2089 烤鸡【DFS递归/10重枚举】

[链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方案总数 第二行至结束,10个数,表示每种配料所放的

P2089 烤鸡

题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方案总数 第二行至结束,10个数,表示每种配料所放的质量 按字典序排列. 如果没有符合要求的方法,就只要在第一行

被军训:P2089 烤鸡

题目背景 猪猪 Hanke 得到了一只鸡. 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末.孜然等),每种配料可以放 11 到 33 克,任意烤鸡的美味程度为所有配料质量之和. 现在, Hanke 想要知道,如果给你一个美味程度 nn ,请输出这 1010 种配料的所有搭配方案. 输入格式 一个正整数 nn,表示美味程度. 输出格式 第一行,方案总数. 第二行至结束,1010 个数,表示每种配料所放的质

洛谷-烤鸡-BOSS战-入门综合练习1

题目背景 Background 猪猪hanke得到了一只鸡 题目描述 Description 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和   现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 Input/output 输入格式:一行,n<=20输出格式:第一行,方案总数第二行至结束,10个数,表示每种配料所

真正决定人生高度的,是你做事的速度

真正决定人生高度的,是你做事的速度 作者:陆鸡鸡 来自:个人的体验(id:tiyan818) 01 <社交网络>里,讲述了facebook曲折的创业史以及官司纠纷. 我对这些都并不惊讶. 最最最让我惊讶的,还是扎克伯格这个人. 尤其是他做事的速度.他的执行力. 扎克伯格被女友甩掉之后,当晚便心血来潮,怒敲代码.在很短的时间内,在电脑上折腾出了一款应用——大头照对比评分应用FaceMash.简单来说,这个应用就是让校园里的美少女上传照片到网站,让路人去评分. 这个简单粗糙的产品抓住了大学生对美色

前端基础之CSS - day13

写在前面 上课第13天,打卡: 出去浪,终有一日要还的: 参考:http://www.cnblogs.com/yuanchenqi/articles/6856399.html 一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. h1 {color:red; font-size:14px;} 二.CSS三种引入方式 1.行内式 行内式是在标记的style属性中设定CSS样式,即直接写在HTML标签里的css样式: <p style="color: red"

学计算机的值得一看的文章,跟帖也很有水平啊

转自http://blog.csdn.net/Xviewee/article/details/1606247 回复CSDN和KAOYAN诸位网友的几点看法,(为避免吵架,郑重声明,本人不是高手,只是有感而发的一点个人陋见,欢迎指正,事先感谢): 就我自己的理解,谈谈我对读研和软件学院的看法,不妥之处一笑了之即可. 如果你有实际开发工作经验,感觉自己的水平和实力进入了一个高原期,迫切需要从理论上提高,那么计算机学院是唯一选择.因为计算机学院才能让你在理论上更上一层楼.软件学院从教学计划上就没有

设计模式(四)

迭代器模式 GOOD:提供一种方法顺序访问一个聚敛对象的各个元素,而又不暴露该对象的内部表示. 为遍历不同的聚集结构提供如开始,下一个,是否结束,当前一项等统一接口. 例: #include <iostream> #include <vector> using namespace std; template<class Item> class Iterator { public: virtual void first()=0; virtual void next()=0