zoukankan      html  css  js  c++  java
  • 【洛谷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[11000][11], ans, b[11];
    
    bool dg(int rest, int num) {
        if (rest == 0 && num == 0) {
            ans++;
            for (int i = 1; i <= 10; i++) {
                a[ans][i] = b[i];
            }
            return 1;
        }
        if (rest == 0)
            return 0;
        if (num == 0)
            return 0;
        for (int i = 1; i <= 3; i++) {
            b[10 - num + 1] = i;
            dg(rest - i, num - 1);
        }
        return 1;
    }
    
    int main() {
        scanf("%d", &n);
        if (n > 30) {
            cout << "0" << endl;
            return 0;
        }
        dg(n, 10);
        cout << ans << endl;
        for (int i = 1; i <= ans; i++) {
            for (int j = 1; j <= 10; j++) {
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
    }

    end-

  • 相关阅读:
    《数据库技术基础与应用(第2版)》学习笔记——第7章~
    《数据库技术基础与应用(第2版)》学习笔记——第7章~
    《数据库技术基础与应用(第2版)》学习笔记——第6章
    《数据库技术基础与应用(第2版)》学习笔记——第6章
    《数据库技术基础与应用(第2版)》学习笔记——第5章
    《数据库技术基础与应用(第2版)》学习笔记——第5章
    方法签名_spring aop_around
    spring整合apache-shiro的简单使用
    SpringMVC_放行静态资源
    java_注解
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/11003995.html
Copyright © 2011-2022 走看看