窮舉法也叫列舉演算法,最簡單,最沒有效率。具體的實現方式是,羅列所有可能的情況,找出目標答案。優點是準確性最強,**簡單,缺點是吃時間。
但話雖如此,只要寄予的運算時間足夠長,就可以以最簡單的方式得到解。因而,窮舉法也是競賽中最常用的方法
火柴棒等式:
火柴棒共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裡面的所有演算法都是以物件導向的形式封裝的,所以使用時候需要先建立乙個物...