【洛谷 P2089】烤鸡(深度优先搜索)

简介: ## 摘要:猪猪Hanke的烤鸡问题要求找出所有配料组合,使得$10$种配料(每种$1$到$3$克)的总和等于给定美味程度$n$。输入为正整数$n$,输出为方案总数及所有符合条件的配料分配,按字典序排列。样例输入$11$,输出$10$种方案。代码采用递归搜索,先计数再打印方案。$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"
using namespace std;

int a[15];
int n;
int cnt;
int flg;

void f(int sum, int x, int y)
{
   
    a[y] = x;
    if (10 == y)
    {
   
        if (sum + x == n)
        {
   
            if (flg)
            {
   
                for (int i = 1; i <= 10; i++)
                {
   
                    cout << a[i] << " ";
                }
                cout << endl;
            }
            else
            {
   
                cnt++;
            }
        }
        return;
    }
    for(int i = 1; i <= 3; i++) {
   
        f(sum + x, i, y + 1);
    }
}

int main()
{
   
    cin >> n;
    f(0, 0, 0);
    flg = 1;
    cout << cnt << endl;
    f(0, 0, 0);
    return 0;
}
目录
相关文章
【Leetcode 1944】队列中可以看到的人数 —— 单调栈
解题思路:维持一个单调递增栈来辅助计算每个人能够看到的人数。从右往左遍历数组,对于每个人,我们将其身高与栈顶元素的身高进行比较。如果当前人的身高比栈顶元素的身高高,则栈顶元素无法被当前人看到,将其出栈,并累计计数
|
缓存
Vue3 详细模板语法及实例
Vue3 详细模板语法及实例
256 0
|
11月前
|
存储 算法 数据挖掘
服务器数据恢复—nas中raid6阵列失效,存储无法访问的数据恢复案例
一台nas上共有14块硬盘组建了一组raid6磁盘阵列。 该nas在工作过程中,raid6阵列中硬盘出现故障离线,导致raid6阵列失效,nas无法正常访问。
|
传感器 监控 安全
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
1382 0
|
监控 Java 微服务
使用Spring Boot构建微服务架构
使用Spring Boot构建微服务架构
|
算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(2)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(2)
184 0
|
消息中间件 API 网络架构
探索微服务架构中的服务通信模式
在微服务架构的复杂世界中,服务间通信是支撑整个系统运行的血脉。本文将深入探讨微服务架构中常见的服务通信模式,通过实例分析其优势与挑战,并讨论如何在不同场景下做出合适的选择,以实现高效、可靠的服务交互。
207 0
|
运维 Prometheus 监控
StarRocks 监控报警配置指南
StarRocks 监控报警配置指南
|
负载均衡 算法 应用服务中间件
Nginx反向代理配置
Nginx反向代理配置
650 0
|
设计模式 uml
设计模式-浅谈依赖倒置原则
设计模式-浅谈依赖倒置原则
219 0