有N只青蛙,一條蛇,一條直線上有一個洞。蛇出現在 0 處,洞出現在 X 處。所有 N 只青蛙都出現在蛇和洞之間。X 的值和 N 只青蛙的位置作為輸入傳遞給 13the 程式。每一秒,一只青蛙可以準確地向右移動 1 個位置,但蛇總是在青蛙移動后向右移動 1 個位置。如果一只青蛙到達洞口,那么它就不會受到蛇的傷害。如果蛇到達任何青蛙的位置,那么它會吃掉該位置的所有青蛙。程式必須列印可以從蛇中保存的青蛙的最大數量作為輸出。 注意:蛇永遠不會進入洞中。
這是我的代碼:
n=int(input())
a=[int(i) for i in input().split()]
b=int(input())
ak=[''] *(b 1)
ak[0]='S'
ak[b]='H'
for i in range(len(a)):
ak[a[i]] ='F'
for j in range(len(ak)):
if ak[j]=='':
ak[j]='*'
print(ak)
My output:
[S,*,*,*,FF,F,*,F,F,F,H]
但我需要這個輸出
Input:
6
4 7 5 8 4 9
10
Output:
3
Explanation:
Here N=6, X=10, and the given 6 integers are 4 7 5 8 4 9.
The maximum number of frogs that can be saved from the snake is 3.
One of the possible ways to save 3 frogs is given below.
At T=0, [S,*,*,*,FF,F,*,F,F,F,H]
At T=1, [*,S,*,*,FF,F,*,F,F,*,HF]
At T=2, [*,*,S,*,FF,F,*,F,*,F,HF]
At T=3, [*,*,*,S,FF,F,*,F,*,*,HFF]
At T=4, [*,*,*,*,S,F,*,*,F,*,HFF]
At T=5, [*,*,*,*,*,S,*,*,*,F,HFF]
At T=6, [*,*,*,*,*,*,S,*,*,*,HFFF]
S- Snake
H- Hole
F- Frog
*- Empty Space
我不知道如何迭代和替換*、S、F。請向我解釋這個問題背后的邏輯。
uj5u.com熱心網友回復:
首先,我按降序對青蛙位置串列進行排序,然后遍歷排序串列并檢查孔與青蛙之間的距離是否小于蛇與孔之間的距離,如果是這樣的話我添加 1ans并將青蛙和洞之間的距離添加到snake值。
代碼:
n=int(input())
a=[int(i) for i in input().split()]
x=int(input())
a.sort(reverse=True)
snake = 0
ans = 0
for frog in a:
if x-frog < x-snake:
ans =1
snake = (x-frog)
print(ans)
輸入:
6
4 7 5 8 4 9
10
輸出:
3
解釋:
sorted list = [9,8,7,5,4,4]
對于第一只青蛙10-9 < 10-0所以ans = 1和snake = (10-9) = 1
對于第二只青蛙10-8 < 10-1所以ans = 1和snake = (10-8) = 3
對于第三只青蛙10-7 < 10-3所以ans = 1和snake = (10-7) = 6
現在你可以看到蛇已經在位置6,青蛙在位置4并且5沒有移動,所以它們不會被保存。
所以最后ans = 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426846.html
下一篇:如何簡化下圖中共享的代碼?
