【Python】2023.2.20_第13天打卡——特别数的和、最少硬币(改编)

Pyramid257 2023-02-20 23:18:13

1.特别数的和

 

我的思路

利用字符串的快遍历、易判断某子字符在字符串里(in)的这两个特性来实现找出要求的数并求和。

我的题解

#特别数的和:
n = int(input())
sum = 0
for i in range(n+1):
    t = str(i)
    if "1" in t or "2" in t or "0" in t or "9" in t:
        a=int(t)
        sum+=a
print(sum)

 

2.最少硬币(改编)

题目描述

有1、5、10、15、20共5种硬币,数字s由这5个硬币中的某个或多个组成,请判断在数字s的组成最少需要多少硬币。

我的思路

利用动态规划实现状态的更新来达到题意。先建立一个无穷大的数组(注意是s+1个,方便数据处理,使得数组[0]用于更新,数组[i]就是除数组[0]外的第i个数),Min表示状态,再利用两个for循环Min[i]=min(Min[i],Min[i-vale[j]]+1)进行状态更新(状态转化),使得第一次for循环实现Min[i]=i,后面再对Min[j]进行更新。

我的题解

def slove(s):
    Min=[int(1e12)]*(s+1)
    Min[0]=0
    for j in range(type):
        for i in range(vale[j],s+1):
            Min[i]=min(Min[i],Min[i-vale[j]]+1)
    print(Min[s])

type=5
vale=[1,5,10,25,50]
s=int(input())
slove(s)

 

...全文
8 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

30,228

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

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