hdu 2089 不要62
2013-09-12 10:46
204 查看
hdu 2089
基础数位dp 用dp[i][j] 表示滴i个数时以j结尾所应该统计的个数 明显每次递推的时候特殊考虑 4 和 6 2 但是在统计的时候需要注意前面是否有4 和62 来防止计算了。第一个数位
基础数位dp 用dp[i][j] 表示滴i个数时以j结尾所应该统计的个数 明显每次递推的时候特殊考虑 4 和 6 2 但是在统计的时候需要注意前面是否有4 和62 来防止计算了。第一个数位
#include<cstdio> #include<cstring> #define M 10 int dp[M][M]; using namespace std; void init(){ dp[0][0]=1; for(int i=0;i<M;i++){ for(int j=0;j<M;j++){ for(int k=0;k<M;k++){ if(j==4||k==4) continue; if(j==2&&k==6) continue; dp[i+1][k]+=dp[i][j]; } } } } int w[M]; int f(int n){ if(n==0) return 0; int len=0; while(n){ w[++len]=n%10; n/=10; } int tsum=0; int flag=0; for(int i=len;i>=1;i--){ for(int j=0;j<w[i];j++){ if(j==4) continue; if(flag==1&&j==2) continue; tsum+=dp[i][j]; } if(flag&&w[i]==2) break; if(w[i]==4) break; if(w[i]==6) flag=1; else flag=0; } return tsum; } int main(){ init(); int a,b; while(~scanf("%d%d",&a,&b)&&(a+b)){ int ans1=f(b+1)-f(a); printf("%d\n",ans1); } return 0; }
相关文章推荐
- HDU-2089 不要62(数位DP基础题-两种写法)
- hdu 2089 不要62(数位DP)
- HDU 2089 不要62
- HDU 2089 不要62
- Hdu 2089 不要62 (数位dp入门题目)
- 数位dp练习(记忆化搜索)HDU 2089 不要62
- HDU-2089-不要62(数位DP)
- HDU 2089 - 不要62
- HDU 2089 不要62 (数位DP)
- HDU 2089 不要62(数位DP入门+模板)
- 【hdu-2089】不要62(数位DP入门)
- HDU 2089 不要62(数位DP)
- HDU 2089 不要62(数位dp)
- 不要62 hdu 2089
- hdu 2089 不要62(数位dp入门)
- Hdu 2089 不要62
- 不要62 HDU 2089
- 不要62(HDU_2089) 数位DP
- HDU 2089 不要62 数位DP入门
- HDU 2089-不要62(数位DP)