PTA 7-5 买地攻略 (25 分)

简介: 数码城市有土地出售。待售的土地被划分成若干块,每一块标有一个价格。这里假设每块土地只有两块相邻的土地,除了开头和结尾的两块是只有一块邻居的。每位客户可以购买多块连续相邻的土地。

题目


数码城市有土地出售。待售的土地被划分成若干块,每一块标有一个价格。这里假设每块土地只有两块相邻的土地,除了开头和结尾的两块是只有一块邻居的。每位客户可以购买多块连续相邻的土地。


现给定这一系列土地的标价,请你编写程序,根据客户手头的现金量,告诉客户有多少种不同的购买方案。


输入格式: 输入首先在第一行给出两个正整数:N(≤10 4 )为土地分割的块数(于是这些块从 1 到 N 顺次编号);M(≤10 9 )为客户手中的现金量。


随后一行给出 N 个正整数,其中第 i 个数字就是第 i 块土地的标价。


题目保证所有土地的总价不超过 10 9 。


输出格式: 在一行中输出客户有多少种不同的购买方案。请注意客户只能购买连续相邻的土地。


输入样例:
5 85
38 42 15 24 9
结尾无空行
输出样例:
11
结尾无空行
样例解释:
这 11 种不同的方案为:
38
42
15
24
9
38 42
42 15
42 15 24
15 24
15 24 9
24 9

解题思路

N, maxZijin = map(int, input().split())
inputList = list(map(int, input().split()))
# N, maxZijin = map(int, "5 85".split())
# inputList = list(map(int, "38 42 15 24 9".split()))
ans = []
def dfs(idx:int, cur:int, patch:[int]):
    #递归结束
    if cur <= 0:
        # ans.append(patch[:])
        return
    elif idx == len(inputList):
        return
    if cur >= inputList[idx]:
        if len(patch) == 0 or idx==(patch[-1]+1):
            # print(idx, cur, patch,inputList[idx])
            # print(idx, cur, patch)
            # and (idx == (patch[-1] + 1))
            patch.append(idx)
            ans.append(patch[:])
            dfs(idx+1, cur - inputList[idx] ,patch)
            # return
            #消除影响【重要】
            patch.pop()
    dfs(idx + 1, cur, patch)
dfs(0,maxZijin,[])
print(len(ans))


目录
相关文章
【PTA】7-8 到底有多二 (15分)
【PTA】7-8 到底有多二 (15分)
2219 0
|
6月前
|
C++
【PTA】​L1-005 考试座位号​ (C++)
【PTA】​L1-005 考试座位号​ (C++)
134 0
【PTA】​L1-005 考试座位号​ (C++)
|
6月前
|
C++
【PTA】​L1-062 幸运彩票 ​ (C++)
【PTA】​L1-062 幸运彩票 ​ (C++)
95 0
【PTA】​L1-062 幸运彩票 ​ (C++)
|
6月前
|
C++
【PTA】​L1-079 天梯赛的善良​ (C++)
【PTA】​L1-079 天梯赛的善良​ (C++)
108 0
【PTA】​L1-079 天梯赛的善良​ (C++)
PTA 7-2 找奇葩 (20 分)
在一个长度为 n 的正整数序列中,所有的奇数都出现了偶数次,只有一个奇葩奇数出现了奇数次。你的任务就是找出这个奇葩。
108 0
PTA 7-4 胖达与盆盆奶 (20 分)
俗称“胖达”,会排队吃盆盆奶。它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖达能吃到更多的奶,等胖的胖达得吃到一样多的奶。
181 0
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
118 0
L1-057 PTA使我精神焕发 (5 分)
L1-057 PTA使我精神焕发 (5 分)
94 0
L1-057 PTA使我精神焕发 (5 分)
|
机器学习/深度学习 人工智能
PTA 7-3 拼题 A 是真爱 (20 分)
如果一个人在一段话里很多次提到 pintia,那对拼题 A 就是真爱啦~ 本题就请你检查一下给定的文字中出现了几次 pintia。
153 0
|
测试技术
PTA 1020 月饼 (25 分)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。
135 0