烤鸡【题目链接】

感觉我超废

关于算法:有很多很多算法吧,但自我感觉最重要的是递归的算法;


SOLUTION:

首先忍不住要吐槽这个神仙数据:

嗯???定睛一看,它这数据范围莫不是白瞎了,因为每种配料可以放1—3克,共10种配料,所以美味程度最大是30,大于30的显然都无解,于是很愉快呀,我们就可以不用搜索30以上的啦,那么我们暴力就好了啊。对于题解的话,出现了好多直接10个for循环跑的

正解显然不是10个for循环跑过,但是数据太水,for循环也确实跑得过qwq;

据析正解应该是搜索?可是我感觉我明明写了个递归啊?果真dfs都是递归。

其实这道题就是考察给我们一个数,把它划分成10份的方法有几种,让我想到了这道题。与数的划分不同,烤鸡这道题需要考虑顺序,而数的划分不需要。

1.首先是输入n啦,如果n>30我们直接判无解,避免去递归浪费时限,不过:亲测并没有无解的分欸qwq:

(已经将无解判断注释掉了)

2.然后就是递归的计算ans了

rest 表示还有多少美味程度没有被划分给这10种配料

num 表示这10种配料还有多少种没有分到美味值

目标状态:rest=num=0;

1.三个临界条件:

  • 当rest=0&&num=0时,说明刚好划分完,那么ans++;
  • 当rest=0但是num!=0时,说明这样划分不可以,因此return 0;
  • 当num=0但是rest!=0时,同样说明这样划分不可以,所以return 0;

2.对于如何储存每种配料的美味值然后输出,这个很迷;开始的时候我是想直接二维数组存下来,但是很尴尬啊,我并没有成功输出是这样的:

改了好久都改不对,现在想想,可能递归写的乱七八糟,直接二维数组存存乱了吧qwq,然后又开了一个一维数组来存储每个ans对应的美味值,最后在rest=0&&num=0时传给二维数组,这样就对了。

尽管还是没有搞明白二维数组是咋错乱的qwq,反正它错乱了;

Code:

#include <bits/stdc++.h>

using namespace std;

int n, a[][], ans, b[];

bool dg(int rest, int num) {
if (rest == && num == ) {
ans++;
for (int i = ; i <= ; i++) {
a[ans][i] = b[i];
}
return ;
}
if (rest == )
return ;
if (num == )
return ;
for (int i = ; i <= ; i++) {
b[ - num + ] = i;
dg(rest - i, num - );
}
return ;
} int main() {
scanf("%d", &n);
if (n > ) {
cout << "" << endl;
return ;
}
dg(n, );
cout << ans << endl;
for (int i = ; i <= ans; i++) {
for (int j = ; j <= ; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}

end-

【洛谷p2089】 烤鸡的更多相关文章

  1. 洛谷P2089烤鸡

    题目链接:https://www.luogu.org/problemnew/show/P2089 题目详情: 题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲, ...

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

    [链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢? ...

  3. 洛谷P2089 烤鸡

    标签:暴力,枚举 题目背景 猪猪 Hanke 得到了一只鸡. 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末. ...

  4. (水题)洛谷 - P2089 - 烤鸡

    https://www.luogu.org/problemnew/show/P2089 非常暴力的dfs,不知道不剪枝会怎么样,但是其实最多也就 $3^{10}$ ,大不到哪里去.还有一个细节就是大于 ...

  5. 洛谷 P2089 烤鸡

    看了前面大佬的代码,发现这道题的解题思路都大同小异. 首先肯定要定义一个变量累加方案数量,因为方案数量要最先输出,所以所有方案要先储存下来.个人不喜欢太多数组,就只定义一个字符串. 然后我们发现只有1 ...

  6. Java实现 洛谷 P2089 烤鸡

    import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.Sc ...

  7. 【洛谷P2660烤鸡】

    题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克, ...

  8. P2089 烤鸡

    题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克, ...

  9. P2089 烤鸡(搜索简单题)

    题意:就是x分别是1到3的未知数,求x1+x2+x3.....+x10=n的方案数和输出每种方案.每种方案还必须按字典序输出 思路:就是简单的构建搜索树+约束条件啊,其实数据范围一点都不大,所以,我第 ...

随机推荐

  1. log4j常用的配置文件

    # priority :debug<info<warn<error #you cannot specify every priority with different file fo ...

  2. 【python】pyenv与virtualenv安装,实现python多版本多项目管理

    踩了很多坑,记录一下这次试验,本次测试环境:Linux centos7 64位. pyenv是一个python版本管理工具,它能够进行全局的python版本切换,也可以为单个项目提供对应的python ...

  3. VMware Workstation安装CentOs7固定ip地址

    今天发现之前hypervisor配置的CentOs7连接不了了,该死的加密系统和杀毒软件又搞事情了,于是决定试下VMware虚拟机,下载安装后,发现可以连上CentOS7界面,很开心,于是决定把之前的 ...

  4. unixbench

    1.下载 https://github.com/kdlucas/byte-unixbench/archive/v5.1.3.tar.gz 2.修改Makefile 交叉编译 #CC=gccCC = a ...

  5. [python 学习] sys模块

    sys.stdout sys.stdin

  6. JAVA中的反射机制 详解

    主要介绍以下几方面内容 理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor.Method.Field 类的用 ...

  7. MATLAB 和 armadillo 数据转换

    #include<iostream> #include<armadillo> int D=5; int M=4; int main() { arma::fmat x; x.ra ...

  8. 使用Fabric在tomcat中部署应用的问题总结

    关闭tomcat时 A.为什么调用shutdown时,报错连接拒绝 结论——很可能是因为tomcat没启动或没完全启动:而这个时候调用shutdown就会出现此类报错 解决方法:time.sleep ...

  9. ps磨皮的方法

    磨皮顾名思义就是将皮肤模糊掉,它可以去除皮肤上的一些斑点以及细纹,从而使皮肤看起来更加光滑.下面就是两张磨皮前后的对比图,很明显右边的人物的皮肤看起来要更好一些:给人的视觉效果也更年轻一点. 磨皮前后 ...

  10. (转)Centos7 yum 源安装nginx

    转:https://www.cnblogs.com/fuhai0815/p/8522868.html 一.建立nginx源 vim /etc/yum.repos.d/nginx.repo [nginx ...