[PAT-乙级]-1023.组个最小数

1023 组个最小数 (20 分)

给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入格式:

输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。

输出格式:

在一行中输出能够组成的最小的数。

输入样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558
#include<cstdio>

 int main() {
    int count[10];//1-9 每个数的个数
    int s;
    for(int i = 0; i < 10; i++){
        scanf("%d",&count[i]);
    }
    if(count[0] != 0){//如果有0,则找出最小的数字
        for(int i = 1; i < 10; i++){
            if(count[i] != 0){
                printf("%d",i);
                count[i]--;
                break;
            }
        }
    }
    for(int i = 0; i < 10; i++){//逐个输出
        if(count[i] != 0){
            for(int j = 0; j < count[i]; j++){
                printf("%d",i);
            }
        }
    }
    return 0;
 }

 

【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)内容概要:本文提出了一种基于融合鱼鹰和柯西变异的麻雀优化算法(OCSSA)优化变分模态分解(VMD)参数,并结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)的轴承故障诊断模型。该方法利用西储大学公开的轴承数据集进行验证,通过OCSSA算法优化VMD的分解层数K和惩罚因子α,有效提升信号分解精度,抑制模态混叠;随后利用CNN提取故障特征的空间信息,BiLSTM捕捉时间序列的动态特征,终实现高精度的轴承故障分类。整个诊断流程充分结合了信号预处理、智能优化与深度学习的优势,显著提升了复杂工况下轴承故障诊断的准确性与鲁棒性。; 适合人群:具备一定信号处理、机器学习及MATLAB编程基础的研究生、科研人员及从事工业设备故障诊断的工程技术人员。; 使用场景及目标:①应用于旋转机械设备的智能运维与故障预警系统;②为轴承等关键部件的早期故障识别提供高精度诊断方案;③推动智能优化算法与深度学习在工业信号处理领域的融合研究。; 阅读建议:建议读者结合MATLAB代码实现,深入理解OCSSA优化机制、VMD参数选择策略以及CNN-BiLSTM网络结构的设计逻辑,通过复现实验掌握完整诊断流程,并可进一步尝试迁移至其他设备的故障诊断任务中进行验证与优化。
### 关于PAT乙级1020题月饼问题的解答 此题目旨在解决如何基于给定的不同种类月饼的库存量、总售价以及市场的大需求量,计算能够获得的大收益。对于此类优化问题,可以采用贪心算法求解。 #### 贪心算法思路 为了大化收益,应当优先考虑单价较高的月饼。因此,首先需要计算每种月饼的单位价格(即总价除以数量),并将这些月饼按照单位价格降序排列。接着,在满足市场需求的前提下尽可能多地购买高价值密度的商品[^1]。 #### 实现方法 具体来说,可以通过以下Python代码实现上述逻辑: ```python def max_profit(n, d, stocks, prices): # 计算每种商品的价值密度,并将其与对应的索引一起存储在一个列表中 value_density = [(prices[i]/stocks[i], i) for i in range(len(stocks))] # 将所有商品按价值密度从大到小排序 sorted_items = sorted(value_density, reverse=True) total_value = 0 remaining_demand = d for vd, idx in sorted_items: if remaining_demand <= 0: break available_stock = min(remaining_demand, stocks[idx]) total_value += available_stock * vd remaining_demand -= available_stock return round(total_value, 2) if __name__ == "__main__": n, d = map(int, input().split()) stock_quantities = list(map(float, input().strip().split())) sale_prices = list(map(float, input().strip().split())) result = max_profit(n, d, stock_quantities, sale_prices) print(f"{result:.2f}") ``` 该程序接收标准输入作为参数,其中`n`代表月饼种类的数量,而`d`则指代市场上的大需求量。之后两行分别包含了各种类月饼的具体存量及其对应的价格信息。后输出的结果为可达到的大利润值,保留两位小数[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值