暴力打表之hdu 2089

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089

有两种方法:

1.数位DP算法

2.暴力打表——真是个好法子!!!

接下来是注意点

1.一般这种数组中的一个数减去一个数组的另一个数,sum[i]-sum[j],这时候就要注意是sum[i]-sum[j]还是sum[i]-sum[j-1]

2.打表就不要进行多余的循环和语句

题目代码:

#include<iostream>
using namespace std;
int sum[1000003]={0};
int solve(int n)
{
    int pre=0,now=0;
    while(n>0)
    {
        now=n%10;
        if(now==4)
        return 0;
        if(now==6&&pre==2)
        return 0;
        n=n/10;
        pre=now;
    }
    return 1;
}
int main()
{
    int n,m;
    for(int i=1;i<=1000000;i++)
    {
        sum[i]=sum[i-1];
        if(solve(i))
        sum[i]++;
    }
    while(cin>>n>>m)
    {
        if(n==0&&m==0)
        break;
        cout<<sum[m]-sum[n-1]<<endl;
    }
}
View Code

 

posted @ 2019-03-10 20:38  saaas  阅读(173)  评论(0)    收藏  举报