乙個極大的多位數字中,存在某種特殊情況出現多少次
通過記憶化和動態規劃的方法,將之前的情況數記錄下來,在計算其他情況的時候,通過狀態的轉移相互利用
【模板】
【題意】求1~n之間有多少個數又含有13又能被13整除,(1<=n<=1e9)
【**】
#include#include#define maxn 20
int dp[maxn][maxn][10];
int maxx[maxn];
//maxx記錄整個數字的上限
//len 表示當前列舉的數字長度
//mod 表示狀態之一,現在這個長度對16取餘的結果
//stu 狀態之一,當前的數字是否存在
//lim 狀態之一,前面的數字是否達到上限,因為列舉的情況在前面沒有達到的話,後面的是可以任取的
// 而如果達到的話,就需要考慮數字的取值範圍了
int geta(int len,int mod,int stu,bool lim)
if(!lim)//沒有超過的話,就將計數返還
dp[len][mod][stu]=cnt;
return cnt;
}int main()
printf("%d\n",geta(len,0,0,1));
}}
演算法學習筆記六 dp
題目描述 在乙個n n的矩陣中,每個格仔都有乙個整數,pipi位於矩陣的左上角,它想知道有多少條不同合法路線達到矩陣右下角。行走規則如下 1 每次只能往下或往右走一步。2 格仔中的整數表示從該點出發一步必須跨越的距離。ps 對 1 和 2 條件的解釋 若此時在 x,y 並且格仔上的數字為 k 則下一...
演算法學習 換根dp
一般來說,我們做題的樹都是預設 1 為根的。但是有些題目需要計算以每個節點為根時的內容。樸素的暴力 以每個點 u 作為 root 暴力dfs下去,複雜度 o n 2 正確的做法 換根dp,複雜度 o n 第一次掃瞄,先預設 root 1 跑一遍 dfs 第二次掃瞄,從 root 1 開始,每次從 u...
演算法學習之路 火星數字
火星人是以13進製計數的 地球人的0被火星人稱為tret。地球人數字1到12的火星文分別為 jan,feb,mar,apr,may,jun,jly,aug,sep,oct,nov,dec。火星人將進製以後的12個高位數字分別稱為 tam,hel,maa,huh,tou,kes,hei,elo,syy...