两个编程题,不是很难。
一、字符串分割
一个字符串内只包含T和S,问如何分割,是的每个字串有且仅有2个T,请计算总共有多少种分割方式?
说明:
字符串字母顺序不可改变;
字符串个数为奇数时,直接返回0;
如输入:
TSST
输出:
1
输入:
TTSSSTST
输出:
4
解释:可分割为TT SSSTST,TTS SSTST,TTSS STST,TTSSS TST四种方式。
思路:找到所有字符串T的下标,每两个T的下标之差的总和,即为总分割方式。
python代码:
str = input()
arr = []
for i in range(len(str)):if str[i] == 'T':arr.append(i)
leng = len(arr)
sum = 0
if leng%2 == 1 or leng == 0:print(0)
elif leng == 2:print(1)
else:for i in range(1,leng-1,2):sum += arr[i+1]-arr[i]print(sum)
二、刻板的牧民
某个牧场有很多奶牛,每个牛栏关着一头奶牛,牛栏互相紧挨,牛栏之间的距离相同,牛栏最左边有个草料堆,牛栏到草料堆的距离等于牛栏到牛栏的距离。牧民从草料堆取出草料到小推车,从左到右喂牛,小推车容量固定,假设小推车可放n捆草,每头奶牛食量不同,所吃草料的捆数不一样。小推车容量n大于每头牛需要吃的草料捆数。牧民喂牛遵循以下规则:
1、每次把小推车装满;
2、每次喂牛都是从左到右把所有牛喂饱;
3、当喂完当前牛栏中的牛时,小推车所剩草料不足以维保下个牛栏中的奶牛,则返回草料堆,装满再继续喂下头牛。
假设从牛栏到草料堆计为1步,牛栏到牛栏也计为1步,牧民从草料堆装满小推车开始喂牛,问喂完所有牛,总共需要走的步数时多少?
思路:小推车上的草料捆数较多时,直接从左到右走到下一个牛栏,步数+1即可;如果不够,则返回,需要多走2倍牛栏到草料堆之间的步数。
如输入:
3 3 2 3 2 3
10
输出:
12
解释:输入第一行为每头奶牛所需草料捆数,第二行为小推车可放10捆草。输出表示要走12步。
python代码:
arr = list(map(int, input().split()))#每头奶牛所需草料捆数
n = int(input())#小推车的容量
temp = n
sum,i = 0,0
while i < len(arr):if temp >= arr[i]:temp = temp - arr[i]sum += 1i += 1else:temp = ntemp = temp - arr[i]sum += 2*i +1i += 1
print(sum)