揹包問題可以分為
0-1揹包(每件物品都只有一件)
完全揹包(每件物品都有無數件)
多重揹包(每件物品可以有多件)
當然,我們的 揹包 肯定是有 容量大小的(看題目規定或者自己輸入)。
首先推薦一下0-1揹包問題的解析
然後再解決一下我自己當時有點迷糊的點
0-1揹包 的思路其實就是這樣
當前揹包的容量能不能放的下當前物品
如果能要放下當前物品要執行什麼操作(要不要拿出來之前放的物品)
執行完操作
放入當前物品後的總價值 是否大於 不放入當前物品的總價值
按照這個思路去看上面推薦的解析應該就能明白了。。。。。。。
本來一直都是用打表,今天被一道題卡超時,沒辦法就學了下,發現沒那麼難。
#includeusingnamespace
std;
#define inf 1000005
int num[inf];//
這個是所有數的陣列,等於0就代表為素數,等於1就代表合數
int book[inf];//
這個是專門放素數的陣列
intmain()
//如果這個數是素數,那就放入素數的陣列
for (int j = 1; j < t && (book[j]*i) //
如果找到了自己的最小質因數,那就跳出
} }}/*
數學小知識:每乙個合數 都至少整除 乙個素數
比如 6能整除2 那麼2就是6的最小質因數
*/
這幾天有點水。。。。。。。。。
線性篩法(尤拉篩法)
嗯在剛剛 沒錯就是在幾分鐘之前 我學會了線性篩法 實在是乙個很好的篩法 正常的篩法,都會對乙個數篩多次 但是尤拉篩法不會 尤拉篩法是用它的最大因數去篩 別跟我說最小質因數,那個很難讓人理解 雖然最小質因數和最大因數是一樣的 我們假設乙個數k,它是t的最大因數 容易知道t是不唯一的 那我們要乘以乙個質...
線性篩法(尤拉篩)
從前有乙個素數篩法叫埃拉託斯特尼篩法,它的思想很簡單,把1 n以內素數的整數倍的數字劃掉,留下的就全是素數,但是它的複雜度是o nlglgn 對於大量不友好資料會跪,於是線性曬登場了。include using namespace std int prime 1100000 primesize,ph...
AcWing 篩法求尤拉函式 篩法 尤拉函式
時 空限制 1s 64mb 給定乙個正整數n,求1 n中每個數的尤拉函式之和。共一行,包含乙個整數n。共一行,包含乙個整數,表示1 n中每個數的尤拉函式之和。1 n 10 6 題意 求1 n中每個數的尤拉函式之和。思路 在這個題目中我們不能直接分別去求1 n之間的尤拉函式,會超時,所以我們就可以根據...