[题目描述]
今天小理又要为他的猫小咪准备好吃的猫粮了,你愿意帮助一下他们么?
小理现在拥有的金钱数为 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()函数的运行值。
运行效果展示:
(声明:以上内容均为原创)