【洛谷 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;
}
目录
相关文章
|
安全 算法
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(16)
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(16)
117 0
|
机器学习/深度学习 算法 定位技术
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(15)
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(15)
111 0
|
存储 算法
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(14)
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(14)
106 0
|
算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(2)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(2)
112 0
|
算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(3)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(3)
111 0
|
算法 定位技术
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)
104 0
|
算法
蓝桥杯丨深度优先搜索
蓝桥杯丨深度优先搜索
73 0
|
存储 算法 定位技术
蓝桥杯丨广度优先搜索
蓝桥杯丨广度优先搜索
78 0
|
算法 定位技术
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(12)
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(12)
96 0
|
算法 测试技术 C++
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(13)
【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(13)
95 0