【洛谷p2089】 烤鸡
感觉我超废
关于算法:有很多很多算法吧,但自我感觉最重要的是递归的算法;
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】 烤鸡的更多相关文章
- 洛谷P2089烤鸡
题目链接:https://www.luogu.org/problemnew/show/P2089 题目详情: 题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲, ...
- 洛谷 P2089 烤鸡【DFS递归/10重枚举】
[链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢? ...
- 洛谷P2089 烤鸡
标签:暴力,枚举 题目背景 猪猪 Hanke 得到了一只鸡. 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末. ...
- (水题)洛谷 - P2089 - 烤鸡
https://www.luogu.org/problemnew/show/P2089 非常暴力的dfs,不知道不剪枝会怎么样,但是其实最多也就 $3^{10}$ ,大不到哪里去.还有一个细节就是大于 ...
- 洛谷 P2089 烤鸡
看了前面大佬的代码,发现这道题的解题思路都大同小异. 首先肯定要定义一个变量累加方案数量,因为方案数量要最先输出,所以所有方案要先储存下来.个人不喜欢太多数组,就只定义一个字符串. 然后我们发现只有1 ...
- Java实现 洛谷 P2089 烤鸡
import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.Sc ...
- 【洛谷P2660烤鸡】
题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克, ...
- P2089 烤鸡
题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克, ...
- P2089 烤鸡(搜索简单题)
题意:就是x分别是1到3的未知数,求x1+x2+x3.....+x10=n的方案数和输出每种方案.每种方案还必须按字典序输出 思路:就是简单的构建搜索树+约束条件啊,其实数据范围一点都不大,所以,我第 ...
随机推荐
- log4j常用的配置文件
# priority :debug<info<warn<error #you cannot specify every priority with different file fo ...
- 【python】pyenv与virtualenv安装,实现python多版本多项目管理
踩了很多坑,记录一下这次试验,本次测试环境:Linux centos7 64位. pyenv是一个python版本管理工具,它能够进行全局的python版本切换,也可以为单个项目提供对应的python ...
- VMware Workstation安装CentOs7固定ip地址
今天发现之前hypervisor配置的CentOs7连接不了了,该死的加密系统和杀毒软件又搞事情了,于是决定试下VMware虚拟机,下载安装后,发现可以连上CentOS7界面,很开心,于是决定把之前的 ...
- unixbench
1.下载 https://github.com/kdlucas/byte-unixbench/archive/v5.1.3.tar.gz 2.修改Makefile 交叉编译 #CC=gccCC = a ...
- [python 学习] sys模块
sys.stdout sys.stdin
- JAVA中的反射机制 详解
主要介绍以下几方面内容 理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor.Method.Field 类的用 ...
- MATLAB 和 armadillo 数据转换
#include<iostream> #include<armadillo> int D=5; int M=4; int main() { arma::fmat x; x.ra ...
- 使用Fabric在tomcat中部署应用的问题总结
关闭tomcat时 A.为什么调用shutdown时,报错连接拒绝 结论——很可能是因为tomcat没启动或没完全启动:而这个时候调用shutdown就会出现此类报错 解决方法:time.sleep ...
- ps磨皮的方法
磨皮顾名思义就是将皮肤模糊掉,它可以去除皮肤上的一些斑点以及细纹,从而使皮肤看起来更加光滑.下面就是两张磨皮前后的对比图,很明显右边的人物的皮肤看起来要更好一些:给人的视觉效果也更年轻一点. 磨皮前后 ...
- (转)Centos7 yum 源安装nginx
转:https://www.cnblogs.com/fuhai0815/p/8522868.html 一.建立nginx源 vim /etc/yum.repos.d/nginx.repo [nginx ...