暴力枚举之烤鸡

news/2024/7/20 20:13:58 标签: java, 深度优先, 暴力枚举, 算法

P2089 烤鸡 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

之前的dp系列太伤作者的心了,还是暴力系列最抚人心。

咳咳咳,虽然本题可以直接10层for循环暴力枚举,但那样太不优雅了,要优雅嘛。

所以直接上dfs,dfs永远的神。

本题要求先输出方案数量在输出具体方案。

我们使用字符串来记录具体方案答案,开个ArrayList来记录答案数量。

具体看注释,代码和注释相结合

java">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int a=Integer.parseInt(br.readLine());
        aa=a;
        int b=10;
        if(a<10||a>30){//判断如果美味值超过我们的上限和下限那么直接输出0
            System.out.println("0");
            return;
        }
        dfs(0,"",0);//开始跑dfs
        System.out.println(al.size());
        for(String e:al){
            System.out.println(e);//输出答案
        }
    }
    public static ArrayList<String> al=new ArrayList<>();
    public static int aa;
    public static void dfs(int a,String b,int c){
        if(c>aa){//如果美味值超出要求结束搜索
            return;//其实为了节约时间还可以判断当前的调料种类数超过10种直接结束的.
        }
        if(a==10&&c==aa){//当我们的每种调料都使用过了并且达到美味值,我们储存答案。
            al.add(b);
            return;
        }
        for(int d=1;d<=3;d++){//遍历搜索
            dfs(a+1,b+d+" ",c+d);
        }
    }
}


http://www.niftyadmin.cn/n/4975403.html

相关文章

【C++笔记】C++之类与对象(下)

【C笔记】C之类与对象(下&#xff09; 1、再看构造函数1.1、构造函数的初始化列表1.2、C支持单参数的构造函数的隐式类型转换1.3、匿名对象 2、Static成员2.1、为什么要有静态成员变量&#xff1f;2.2、一个类的静态成员变量属于这个类的所有对象2.3、静态成员函数 3、友元3.1、…

day13 代码回想录 栈和队列3 滑动窗口最大值前 K 个高频元素

大纲 ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 滑动窗口最大值 题目链接&#xff1a;239. 滑动窗口最大值 分析过程&#xff1a; 注意题目要求是返回从0到n-k的窗口移动过程中的最大值数组&#xff0c;这和求整个窗口移动过程中的最大值是有区别的。 本题是有难度的&…

[笔记] 阿里云域名知识

文章目录 前言一、域名二、域名常见分类2.1 泛域名2.2 为什么要设置子域名 三、记录类型3.1 A- 将域名指向一个PV4地址3.2 CNAME- 将域名指向另外一个域名3.3 AAAA- 将域名指向一个PV6地址3.4 MX- 将域名指向邮件服务器地址3.5 SRV- 记录提供特定的服务的服务器使用场景 3.6 TX…

C++强制类型转换运算符-dynamic_cast、const_cast、static_cast、reinterpret_cast

代码及说明&#xff1a; main.cpp #include <iostream> #include <cstdlib> #include <ctime> #include "rtti1.h" using std::cout; using std::endl;Grand *GetOne(); void change(const int *pt, int n); int main() {/*dynamic_cast:dynamic_…

Sping源码(七)— 后置处理器(自定义后置处理器)

上一篇中简单介绍了Spring中invokeBeanFactoryPostProcessors方法的执行流程&#xff0c;以及BFPP和BDRPP类的介绍&#xff0c;这篇文章我们来自定义实现一个类的后置处理器。 自定义PostProcessor 自定义PostProcessor的方式一共两种&#xff0c;都是根据invokeBeanFactoryPo…

菜鸟教程《Python 3 教程》笔记

菜鸟教程《Python 3 教程》笔记 0 写在前面1 基本数据类型1.1 Number&#xff08;数字&#xff09;1.2 String&#xff08;字符串&#xff09;1.3 bool&#xff08;布尔类型&#xff09;1.4 List&#xff08;列表&#xff09;1.5 Tuple&#xff08;元组&#xff09;1.6 Set&…

leetcode分类刷题:滑动窗口(三、两个序列+窗口定长类型)

1、通过对滑动窗口前两个题型的总结&#xff0c;我们几乎已经习惯在给定的一个序列里使用滑动窗口的模板解题了&#xff0c;本次对应的“三、两个序列窗口定长类型”&#xff0c;也是考察连续子数组、连续子串问题&#xff0c;只不过这次会给定两个序列&#xff0c;判断短序列在…

如何选择合适的损失函数

目录 如何选择合适的损失函数 1、均方误差&#xff0c;二次损失&#xff0c;L2损失&#xff08;Mean Square Error, Quadratic Loss, L2 Loss&#xff09; 2、平均绝对误差&#xff0c;L1损失&#xff08;Mean Absolute Error, L1 Loss&#xff09; 3、MSE vs MAE &#xff…