烤鸡【题目链接】

感觉我超废

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


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. vue的v-cloak 指令设置样式

    使用 v-cloak 指令设置样式,可以使样式在 Vue 实例编译结束时,从绑定的 HTML 元素上被移除. 详情请参考:https://www.jianshu.com/p/f56cde007210? ...

  2. 定制团队自己的 Vue template

    一,我们使用vue-cli 可以快速初始化vue.js的项目,官方提供了webpack,pwa,browserify-sipmple,等常用template 二.置知识1,模板结构template:该 ...

  3. html a标签链接点击闪动问题解决

    <a href="#">链接点击会闪动,解决: 这三种都可以用:<a href="javascript:;"></a>< ...

  4. [HNOI2009]有趣的数列(卡塔兰数,线性筛)

    [HNOI2009]有趣的数列 题目描述 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1< ...

  5. 使用GDB调试产生多进程的程序

    如果一个进程fork了多个进程,这时使用GBD工具对程序进行调试会如何呢? 实际上,GDB 没有对多进程程序调试提供直接支持.例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试 ...

  6. jquery 模态对话框传值,删除,新增表格行

    个人的练习代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. Vue----项目增加百度统计

    到百度统计->注册账号->新增网址->获取代码 在Vue单页面开发中接入百度统计代码时,如果直接按照官网的走会出现错误,就是_hmt找不到,这是因为在一个js文件里声明的变量在另一个 ...

  8. Pycharm创建模板头部默认

    PyCharm 打开,点击左上角 “FILE” 进入 “Settings”,进行头文件设置: 如下: 我的模板: #!/usr/bin/env python# -*- coding:utf-8 -*- ...

  9. String Problem

    String Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  10. face_recognition开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38%——新开源的用了一下感受一下 原创 2017年07月28日 21:25:28 标签: 人脸识别 / 人脸自动定位 / 人脸识别开源库 / f ...