題意就是簡單的給定乙個n求1~n所有含有49的數字
數字dp入門題可以當作模板改。
pos表示到pos位,pre為上一位的數字用來判斷是否可以得到49,sta表示狀態,無非就是如果該為是4的時候和不是4的時候,對下一位dp的影響。limit表示是否到了限制如213則百位是2則十位只能為0,1。
這題網上都是三位的dp儲存或是儲存三種狀態,實際上和不要62那題一樣,先解出不要49再用總數減去所得值就是有49的個數。
#include
#include
#include
#include
using namespace std;
typedef long long ll;
ll dp[100][2];
int a[100];
ll dfs(int
pos, int pre, int sta, int limit)
if(!limit)
dp[pos][sta] = temp;
return temp;
}ll solve(ll n)
return dfs(pos - 1, -1, 0, 1);
}int main()
return
0;}
hdu 3555數字DP 入門題
include include include include include include include include include include includeusing namespace std typedef long long ll define inf 0x3f3f3f3f ...
hdu 3555 數字dp入門
題意 給定乙個long long型別能夠存下的數字n,統計1 n之間含有49的數字的個數 思路 初始版本 需要記錄當前位置,前一位置放了那個數字,當前是否已經包含49,是否有上界這四個資訊,也就是dfs的四個引數。dfs pos,pre,istrue,limit 其實這種做法有點相當於把普通的數字d...
hdu3555 數字dp 入門
題目大意 給乙個數字n,範圍在1 2 63 1,求1 n之間含有49的數字有多少個。思路 狀態轉移 dp i 0 代表長度為 i 並且不含有49的數字的個數 dp i 1 代表長度為 i 並且不含有49,但是最高位是9的數字的個數 dp i 2 代表長度為 i 並且含有49的數字的個數。陣列 a i...