劍指offer:7.8.9.10.12 (12.27)
阿新 • • 發佈:2019-01-05
''' 7.斐波那契數列 **題目:**大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39。 **題解:**遞迴和非遞迴方法。 ''' class Solition(): def Fibonacci(self, n): #遞推的方法 if n==0: return 0 if n==1: return 1 Fib=[0 for i in range(n+1)] Fib[0]=0 Fib[1=1 for i in range(2,n+1): Fib[i]==Fib[i-1]+Fib[i-2] return Fib[n] def Fibonacci(self, n): #遞迴的方法 if n==0: return 0 if n==1 or n==2: return 1 else: return self.Fibonacci1(n-1)+self.Fibonacci1(n-2) if __name__=='__main__': solution=Solution() n=int(input()) ans=solution.Fibonacci1(n) print(ans)
''' 8.跳臺階 **題目:**一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 **題解:**ans[n]=ans[n-1]+ans[n-2] ''' class Solution: def jumpFloor(self, n): if n==0: return 0 if n==1: return 1 if nu==2: return 2 ans=[0 for i in range(n+1)] ans[1],ans[2]=1,2 for i in range(3,n+1): ans[i]=ans[i-1]+ans[i-2] return ans[n] if __name__ == '__main__': solution = Solution() n=int(input()) ans=solution.jumpFloor(n) print(ans)
''' 9.變態跳臺階 **題目:**一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 **題解:**ans[n]=ans[n-1]+ans[n-2]+ans[n-3]+…+ans[n-n],ans[n-1]=ans[n-2]+ans[n-3]+…+ans[n-n],ans[n]=2*ans[n-1]。 ''' class Solution: def jumpFloorII(self, number): if number==1: return 1 if number==2: return 2 return 2*self.jumpFloorII(number-1) if __name__=='__main__': solution=Solution() n=int(input()) ans=solution.jumpFloorII(n) print(ans)
'''
10.矩形覆蓋
**題目:**我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
'''
class Solution:
def rectCover(self, number):
if number==0:
return 0
if number==1:
return 1
Fib=[0 for i in range(0,number+1)]
Fib[1],Fib[2]=1,2
for i in range(3,number+1):
Fib[i]=Fib[i-1]+Fib[i-2]
return Fib[number]
if __name__=='__main__':
solution=Solution()
n=int(input())
ans=solution.rectCover(n)
print(ans)
'''
12.數值的整次方
**題目:**給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
'''
class Solution:
def Power(self, base, exponent):
ans=1
for i in range(0,abs(exponent)):
ans=ans*base
if exponent>0:
return ans
else:
return 1/ans
if __name__=='__main__':
solution=Solution()
base=float(input())
exponent=int(input())
ans=solution.Power(base,exponent)
print(ans)