HYSBZ - 1026 windy数 数位DP
2014-11-25 23:36
337 查看
题目大意:windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?
解题思路:模板题目,初始的pre是12,保证第一位能满足
解题思路:模板题目,初始的pre是12,保证第一位能满足
#include<cstdio> #include<cstring> #include<cmath> using namespace std; int data[12],dp[12][13]; int DP(int pos,int pre,bool jud, bool board) { if(pos == -1) return 1; if(!board && dp[pos][pre] != -1) return dp[pos][pre]; int ans = 0; int end = board? data[pos]:9; for(int i = 0; i <= end; i++) { if(!(jud || i)) ans += DP(pos-1,12,0,board && (i == end)); else if(fabs(pre-i) >= 2) ans += DP(pos-1,i,1,board && (i == end)); } if(!board) dp[pos][pre] = ans; return ans; } int solve(int x) { int pos = 0; while(x) { data[pos++] = x % 10; x = x / 10; } return DP(pos-1,12,0,1); } int main() { int left,right; memset(dp,-1,sizeof(dp)); scanf("%d%d",&left,&right); printf("%d\n",solve(right) - solve(left-1)); return 0; }
相关文章推荐
- HYSBZ:1026 windy数(数位DP)
- HYSBZ 1026 windy数 数位dp
- HYSBZ 1026: windy数(数位DP)
- BZOJ1026 [SCOI2009]windy数(数位dp)
- HYSBZ - 1026 windy数 (数位DP)
- BZOJ 1026 windy数 数位DP模板题
- BZOJ_1026_[SCOI2009]_windy数_(数位dp)
- 【BZOJ】1026: [SCOI2009]windy数(数位dp)
- [省选前题目整理][BZOJ 1026][SCOI 2009]windy数(数位DP)
- BZOJ 1026 windy数 (数位DP)
- bzoj:1026: [SCOI2009]windy数(数位dp)
- 【BZOJ1026】windy数,数位DP
- BZOJ 1026 [SCOI2009]windy数 数位dp
- bzoj1026 [SCOI2009]windy数(数位dp)
- [SCOI 2009]BZOJ 1026 windy数 - 数位dp
- BZOJ 1026 windy数 (数位DP)
- bzoj 1026: [SCOI2009]windy数(数位dp)
- [bzoj1026][SCOI2009]windy数_数位dp
- bzoj1026 windy数(数位dp)
- 【bzoj1026】【SCOI2009】【windy数】【数位dp】