hdu 2089 数位dp
来源:互联网 发布:2016医药行业数据分析 编辑:程序博客网 时间:2024/04/26 14:57
不要62
具有教科书性质的数位dp应用实例。
/** Aug 31, 2015 9:57:30 PM * PrjName:hdu2089 * @author Semprathlon */import java.io.*;import java.util.*;public class Main { /** * @param args */ final static int maxl=7; static int[][] f; static int[] digit; static void init(){ f=new int[maxl+1][10]; f[0][0]=1; for(int i=1;i<=maxl;i++)//从低位到高位! for(int j=0;j<10;j++) for(int k=0;k<10;k++) if (k!=4&&!(j==6&&k==2)) f[i][j]+=f[i-1][k]; } static int solve(int n){ //if (n==0) return 1; digit=new int[maxl+1]; while(n>0){ digit[++digit[0]]=n%10; n/=10; } int res=0; for(int i=digit[0];i>0;i--){//从高位到低位! for(int j=0;j<digit[i];j++) if(j!=4&&!(j==2&&digit[i+1]==6))//限制前j位,枚举后digit[0]-j位 res+=f[i][j]; if(digit[i]==4||digit[i]==2&&digit[i+1]==6) break; } return res; } public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub StreamTokenizer in=new StreamTokenizer(new BufferedInputStream(System.in)); PrintWriter out=new PrintWriter(System.out); init(); while(in.nextToken()!=StreamTokenizer.TT_EOF){ int n=(int)in.nval; in.nextToken(); int m=(int)in.nval; if (n==0&&m==0) break; //out.println(solve(n)+" "+solve(m+1)); out.println(solve(m+1)-solve(n)); } out.flush(); out.close(); }}
0 0
- HDU 2089 数位DP
- Hdu 2089 数位dp
- HDU 2089 数位DP
- 数位DP hdu-2089
- HDU 2089 数位DP
- HDU 2089【数位DP】
- 【数位DP】 HDU 2089
- 数位DP hdu 2089
- hdu 2089 数位DP
- hdu 2089 数位dp
- hdu 2089 数位dp
- hdu 2089 数位dp
- HDU 2089 数位DP
- HDU 2089 数位DP
- hdu 2089 数位DP
- HDU-2089-数位dp
- HDU 2089 数位DP
- hdu 2089 数位dp
- POJ 1815 Friendship(最小割+拆点法)
- 代码审查 之 Redmine 一键安装配置过程记录
- Shell下不能使用Tab补全命令的原因
- UVA 10816 Travel in Desert 最短路+Kruscal
- python虚拟机virturalenv的使用
- hdu 2089 数位dp
- Android分辨率适配layout布局的问题
- windows共享打印机机器定时清理连接会话的问题
- 判断两个字符串是否由相同的字符组成
- UIView动画 防多星球环绕转动
- Harris角点检测
- HashMap的数据结构
- 新能源集团2016校招测评
- 002-mapreduce经典模型