演算法入門 1 列舉法。

2021-10-01 11:51:14 字數 2411 閱讀 9817

** 以下都是通過列舉法解決問題的。其實列舉法的本質就是把所有問題可能的結果都嘗試一邊,再通過某種條件將錯誤的結果篩選出去,留下的便是正確的結果。 **

輸出乙個直角三角形,符合 注釋中的那個三角形格式。

# 輸出乙個個三角形

# 輸入 5 輸出的是乙個五行的三角形

# 第一行 1個* 第二行 2個 ... 第五行五個

# 第一步 我們需要一層for迴圈控制輸出 n行 *

# 第二步 我們需要一層for迴圈控制每一層輸出*的個數 1,2,3,4,5

# for i in range(n):

# for j in range(i+1):

# *# **

# ***

# ****

# *****

def out_angle1(n):

for i in range(n):

for j in range(i+1):

print("*",end="")

print()

以下根據案例1改變的輸出三角形,可以根據1嘗試寫一下。

#     *

# **

# ***

# ****

# *****

def out_angle2(n):

for i in range(n):

for j in range(n-i-1):

print(" ",end="")

for j in range(n - i,n+1):

print("*", end="")

print()

# *

# ***

# *****

# *******

# *********

def out_angle3(n):

for i in range(n):

for j in range(n-i-1):

print(" ",end="")

for k in range(2*(i+1)-1):

print("*",end="")

斐波那契數列:1,1,2,3,5,8,13,21,34,55,…。斐波那契額數列的規律是 前兩個為1,從第三個開始的每乙個數為前乙個數與前乙個數的前乙個數字的和。比如:第三個數2為第二個數和第乙個數的和。第四個數3為第三個數與第二個數的和。以下為遞迴和非遞迴的兩種求解方式。

# fbnq 遞迴

def fib(n):

if n == 1 or n == 2:

return 1

else:

return fib(n-1)+fib(n-2)

# 非遞迴

def fib_n(n):

result = 0

a = 0

b = 0

for i in range(n+1):

if i<=2:

result = 1

a = 1

b = 1

else:

result = a+b

b,a = result,b

return result

4.求前100個素數和,素數是只能被1和本身整除的數。1不是素數。

# 判斷 100以內素數 並進行求和

def is_prime(n):

result = 0

for i in range(2,n):

is_pr = true

diversor = int(i/2)+1

# print(diversor)

if i>2:

for j in range(2,diversor):

if i %j == 0:

is_pr = false

break

if is_pr == true:

result = result +i

print(i,end= " ")

return result

def is_prime_2(n):

result = 0

prime_list =

for i in range(2,n):

is_pr = true

if i %2 == 0 and i!=2:

is_pr = false

else:

for j in prime_list:

if i %j == 0:

is_pr = false

break

if is_pr == true:

result = result +i

print(i,end= " ")

return result

演算法基礎(1) 列舉

列舉在大家看來可能是乙個非常簡單的問題,不就是乙個遍歷演算法嘛,有什麼好說的,然而,在參加了北京大學mooc的演算法基礎後,我直接被震驚了。原來列舉演算法還能這麼玩!好吧,不說有的沒得沒得了,先來看第乙個例子 熄燈問題 這個問題的描述如下 乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的...

演算法1 列舉法解決熄燈問題

北大郭煒老師 程式與演算法 二 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按鈕改變3盞燈的狀態 在矩陣邊...

基礎演算法2 1 列舉法

題目上新增了超連結,大家點一下題目就會自動跳轉到poj原題介面 冲鸭衝鴨 列舉法由於建模簡單,所以用來提高 實現能力十分合適,暴力搜尋ac題時成就感也是滿滿,而且列舉法應該是之後所有演算法的基礎。我覺得部分演算法的本質只是解決了如何列舉以及對列舉的優化。大家放心起航吧!本章節弄懂題意就可以做,所以就...