【洛谷 P2089】烤鸡(循环枚举)

简介: 烤鸡问题探讨了如何组合10种配料达成特定美味程度。给定正整数$n$代表美味程度,程序需列出所有使得配料总和等于$n$的方案。样例输入11对应10种配料的不同组合,输出显示了10种符合条件的方案。代码通过暴力枚举实现,AC代码展示了如何遍历所有可能的配料质量组合来找到答案。对于100%的数据,$n\leq5000$。

烤鸡

题目背景

猪猪 Hanke 得到了一只鸡。

题目描述

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 $10$ 种配料(芥末、孜然等),每种配料可以放 $1$ 到 $3$ 克,任意烤鸡的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 $n$ ,请输出这 $10$ 种配料的所有搭配方案。

输入格式

一个正整数 $n$,表示美味程度。

输出格式

第一行,方案总数。

第二行至结束,$10$ 个数,表示每种配料所放的质量,按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个 $0$。

样例 #1

样例输入 #1

11

样例输出 #1

10
1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 1 1 1 2 1 
1 1 1 1 1 1 1 2 1 1 
1 1 1 1 1 1 2 1 1 1 
1 1 1 1 1 2 1 1 1 1 
1 1 1 1 2 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 1 
1 1 2 1 1 1 1 1 1 1 
1 2 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1

提示

对于 $100\%$ 的数据,$n \leq 5000$。

思路

暴力枚举。循环枚举两次,一次输出方案总数,一次输出方案序列。

AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
#define f(i, x) for (int i = 1; i <= x; i++)
using namespace std;

int em(int n, int flg){
   
    int cnt;
    int q, w, e, r, t, y, u, i, o, p;
    f(q, 3)
        f(w, 3)
            f(e, 3)
                f(r, 3)
                    f(t, 3)
                        f(y, 3)
                            f(u, 3)
                                f(i, 3)
                                    f(o, 3)
                                        f(p, 3)
    {
   
        if (n == q + w + e + r + t + y + u + i + o + p)
        {
   
            if(flg){
   
                cout << q << " " << w << " " << e << " " << r << " " << t << " " << y << " " << u << " " << i << " " << o << " " << p << endl;
            }
            cnt++;
        }
    }
    return cnt;
}

int main()
{
   
    int n;
    cin >> n;
    cout << em(n, 0) << endl;
    em(n, 1);
    return 0;
}
目录
相关文章
|
存储 Java 索引
【面试题精讲】ArrayList 和 Array(数组)的区别?
【面试题精讲】ArrayList 和 Array(数组)的区别?
|
12月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
2363 0
高精度算法(加、减、乘、除,使用c++实现)
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的未来:技术革新与趋势展望
【10月更文挑战第23天】探索人工智能的未来:技术革新与趋势展望
|
算法 编译器 C语言
【C/C++ 编译器的差异化】C++标准库在GCC和VS之间的表现差异
【C/C++ 编译器的差异化】C++标准库在GCC和VS之间的表现差异
1343 1
|
12月前
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
257 3
|
12月前
|
前端开发 JavaScript 开发工具
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
1925 0
|
机器学习/深度学习 分布式计算 大数据
一文读懂Apache Beam:统一的大数据处理模型与工具
【4月更文挑战第8天】Apache Beam是开源的统一大数据处理模型,提供抽象化编程模型,支持批处理和流处理。它提倡"一次编写,到处运行",可在多种引擎(如Spark、Dataflow、Flink)上运行。Beam的核心特性包括抽象化概念(PCollection、PTransform和PipelineRunner)、灵活性(支持多种数据源和转换)和高效执行。它广泛应用在ETL、实时流处理、机器学习和大数据仓库场景,助力开发者轻松应对数据处理挑战。
2830 1
|
监控 安全 网络安全
网络安全的基本原则与策略
【8月更文挑战第19天】网络安全的基本原则与策略是保障网络系统安全性的重要基石。通过遵循网络空间主权原则、网络安全与信息化发展并重原则以及共同治理原则等基本原则,制定并实施科学合理的安全策略和实施措施,可以有效提升网络系统的安全性、完整性、可用性和保密性。同时,随着网络技术的不断发展和变化,我们需要持续关注网络安全的新趋势和新挑战,不断调整和完善安全策略和实施措施,确保网络系统的持续安全和稳定运行。
|
存储 测试技术 iOS开发
CocoaLumberjack的ios应用开发使用指南
CocoaLumberjack的ios应用开发使用指南
392 2
|
开发者
找到一个软件著作权源代码材料格式文档生成辅助工具(完全私密,没有代码泄露风险)
截至2023年5月,一款工具已获一万次下载,用户反馈良好。该工具帮助开发者轻松整理软著申请所需的60页源代码,支持多种编程语言,自动处理页眉、页码和格式,减少因格式问题导致的补正。提供《文档鉴别材料》模板和简单两步操作的源代码文档生成器,加快软著注册流程。下载链接包括百度网盘和阿里云盘。
找到一个软件著作权源代码材料格式文档生成辅助工具(完全私密,没有代码泄露风险)