python-小理和他的猫(赛氪OJ)

[题目描述]
今天小理又要为他的猫小咪准备好吃的猫粮了,你愿意帮助一下他们么?
小理现在拥有的金钱数为 N ,有 M 种小咪喜欢的猫粮从左到右排列,已知每种猫粮的价格 ai​ ,他的购买规则如下:
1.必须按照从左到右的顺序购买,如果可以买这种猫粮则一定购买,每种猫粮只能购买一个,买完第一种猫粮买第二种猫粮,以此类推。
2.如果遇到金额不足的情况,将跳过该猫粮,购买下一种猫粮,直到结束。
输出他最多能买多少种猫粮。
输入格式:
第一行输入一个整数 T ,代表有 T 组测试数据。
每组数据第一行包括一个 N 和 M 。
第二行包括以空格间隔开的 M 个数 a_1,a_2,a_3…,a_M。
输出格式:
每组数据对应只有 1 行输出,输出最大购买数。
样例输入
2
10 4
1 1 10 1
10 5
1 2 3 4 5
样例输出
3
4
数据范围
对于 100% 的数据,保证 1≤T≤5 , 1≤N,M≤100 。
来源/分类(难度系数:二星)
循环结构 模拟 


完整代码展示:
def bought(c,a,b):
    d=0
    e=0
    while e<len(b):
            if c>=b[e]:
                  c-=b[e]
                  d+=1
                  e+=1
           else:
                  e+=1
    return d
number1=int(input())
list_1=[]
list_2=[]
list_3=[]
for i in range(number1):
      n,m=map(int,input().split())
      list_4=list(map(int,input().split()))
      list_1.append(n)
      list_2.append(m)
      list_3.append(list_4)
number2=0
while number2<number1:                                         print(bought(list_1[number2],list_2[number2],list_3[number2]))
       number2+=1


代码解释:
def bought(c,a,b):
        d=0
        e=0
        while e<len(b):
                if c>=b[e]:
                      c-=b[e]
                      d+=1
                      e+=1
               else:
                      e+=1
        return d            
”,自定义一个函数bought():让用户输入函数的三个关键字c,a,b,令d=e=0,当e<len(b)时,判断c是否大于等于b[e],如果是,则令c-b[e],d+1,e+1,否则e+1,直至e等于len(b),跳出整个while循环,返回值d。
number1=int(input())
 list_1=[]
 list_2=[]
 list_3=[]                       
”,让用户输入数据的组数number,建立空列表list_1,list_2,list_3。
for i in range(number1):
       n,m=map(int,input().split())
       list_4=list(map(int,input().split()))
       list_1.append(n)
       list_2.append(m)
       list_3.append(list_4)                       
”,让用户输入总金额n和猫粮种类数m,让用户输入m种猫粮的具体价格,并将其储存在列表list_4中,接着将n,m,list_4分别添加进list_1,list_2,list_3中。
number2=0
while number2<number1:
    print(bought(list_1[number2],list_2[number2],list_3[number2]))
number2+=1
”,遍历列表,打印bought()函数的运行值。


运行效果展示:

6d5b2e74f63144bfbf8dcd3437799ac3.jpg

8335e7f78a474130ad7248e222332fd5.jpg 

           (声明:以上内容均为原创) 

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值