(每日一练28770)题目名称:硬币的面值

文盲老顾
新星创作者: 信息安全技术领域
领域专家: 数据库技术领域
2023-05-10 07:29:52

小A有n枚硬币,现在要买一样不超过m元的商品,他不想被找零,同时又不想带太多的硬币,且硬币可以重复,现在已知这n枚硬币的价值,请问最少需要多少硬币就能组合成所有可能的价格?

这个题目,曾经用例有一个错误,经过反馈,现在终于修正了。一时半会,也想不出优雅的写法,先这样吧。

n,m = map(int,input().split())
arr = sorted(map(int,input().split()))
z,p,c = [],0,0
while sum(z) < m:
    p += 1
    if sum(z) > p:continue
    a = [v for v in arr if v <= p]
    if len(a) == 0:break
    if sum(z) < p:z.append(a[-1])
print('No answer!!!' if len(z) == 0 else len(z))
...全文
273 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2023-05-26
  • 打赏
  • 举报
回复

用 js 做,发现用例有点问题,第三个用例输入是 13 200,两个数字间,有两个空格,所以用 split(' ')会报错,只好用正则切了

v1 = readline().split(/\s+/gi).map(x => parseInt(x))
v2 = readline().split(' ').map(x => parseInt(x)).sort((x,y) => x > y ? -1 : 1)
s = 0,c = 0,z = []
while (s < v1[1]){
    c ++
    if (s > c)continue
    v = v2.filter(x => x <= c)
    if (v.length == 0)break
    if (s < c){s += v[0];z.push(v[0])}
}
print(z.length == 0 ? 'No answer!!!' : z.length)
内容概要:本文聚焦于高维多阶段随机规划问题,深入研究了正则化分解方法与马尔可夫过程在刻画不确定性动态演化中的应用,并提供了完整的Python代码实现。通过引入正则化技术有效降低了高维随机优化问题的计算复杂度,结合马尔可夫链建模多阶段决策过程中的不确定性传播机制,提升了模型在复杂动态环境下的求解效率与鲁棒性。研究涵盖了问题建模、算法设计、数值求解及结果分析全过程,具有较强的理论深度与工程实践价值; 适合人群:具备一定运筹学、优化理论基础及Python编程能力,从事智能决策、人工智能、能源系统优化、金融工程等相关领域的科研人员、高校研究生以及工业界研发工程师; 使用场景及目标:①应用于电力系统调度、供应链管理、金融资产配置等存在多阶段不确定性的复杂决策场景;②掌握高维随机规划的建模思路与高效求解技术,深入理解正则化方法与马尔可夫过程在实际优化算法中的融合机制与实现路径; 阅读建议:建议结合提供的Python代码进行动手实践,重点关注算法实现细节、参数敏感性分析与收敛性验证,鼓励在不同应用场景中迁移和改进该方法,进一步探索其在分布鲁棒优化、动态规划等前沿方向的扩展潜力。

320

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧