從1開始的演算法學習 2,什麼是窮舉法?

2021-09-19 16:14:53 字數 1566 閱讀 3796

窮舉法也叫列舉演算法,最簡單,最沒有效率。具體的實現方式是,羅列所有可能的情況,找出目標答案。優點是準確性最強,**簡單,缺點是吃時間。

但話雖如此,只要寄予的運算時間足夠長,就可以以最簡單的方式得到解。因而,窮舉法也是競賽中最常用的方法

火柴棒等式: 

火柴棒共n根,可以拼出多少個形如a+b=c的等式?

如果a != b

則a+b和b+a視作不同等式

n根火柴必須全部使用

所用火柴數: 0:

6根 1:2根

2:5根 ……

祝:不僅限一位數,還有二位數和三位數,比如0+11

=11

【輸入樣例】

14【輸出樣例】

2【輸入樣例2】

18【輸出樣例2】

9

由於窮舉法難度過低,直接上**噢

注:該**所有的具體解釋請下移

#include

#include

#include

#include

using namespace std;

int need=

;//用於儲存數字使用的火柴棒

int m[

2000];

//用於儲存不同火柴棒可以有多少種思路

int ans;

intmatch

(int cur)

return ans;

}void

getmatch()

}int

main()

} cout << ans;

return0;

}

我們在這裡設定了兩個子函式,分別是

int

match

(int cur)

;void

getmatch()

;

match函式:返回對應數字所需要的火柴數

getmatch:將所有數字需要的火柴數扔進2000大陣列中

int

match

(int cur)

return ans;

}

首先,讀入乙個數字,假設是9,那麼就會返回6,也就是9對應的火柴棒數量。

同理,如果是26,則會先加上6的,再加上2的火柴棒數量

不用多說,就是將計算結果扔到m中

for

(int i=

0;i<=

1000

;i++

)}

是的,你沒有看錯,我們就是要迴圈整整一百萬次。

首先,由於加號和等於一共佔4個棒子,同時右邊至少有2個棒子(即為1),所以總棒子數最小為6(故n-6);

緊接著,判斷是否滿足條件,如果滿足加法條件,且兩數不相等,根據題目+2,相等則+1。

陣列下標為什麼是從0開始的,而不是1?

為了更方便計算記憶體位址 陣列 array 是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料 線性表 按線性結構儲存 依次儲存 陣列,鍊錶,佇列,棧都是經典的線性表 連續記憶體空間和相同資料型別 真是因為有這兩個限制才會有隨機訪問這個性質的。我們來看看int型別長度為10...

從0開始的機器學習 knn演算法篇(1)

在慕課網學習的基本內容做學習總結。knn的演算法過程 設定x train是乙個資料集,裡面有一組資料。x train是其中的乙個資料點。import numpy as np from math import sqrt 呼叫了math庫中的開平方 distances 存放兩點之間的距離 for x t...

從0開始的機器學習 knn演算法篇(2)

scikit learn中的knn演算法 from sklearn.neighbors import kneighborsclassfier kneighborsclassifier裡面包含了封裝好的knn演算法 sklearn裡面的所有演算法都是以物件導向的形式封裝的,所以使用時候需要先建立乙個物...