hdu 2089 车牌号 & 里程碑

来源:互联网 发布:淘宝联盟 淘口令 编辑:程序博客网 时间:2024/05/22 17:04
这个题比较严重的问题就是超时.可以用数组保存数据状态来解决这个问题
#include<iostream>using std::cin;using std::cout;using std::endl;int number[1000000];int main(){        int test;    int n,m;    memset(number,-1,sizeof(number));    while(cin>>n>>m&&(m!=0||n!=0)){        int count=0;                for(int i=n;i<=m;i++){            test=0;                         if(number[i]!=-1){                if(number[i]==1)                    test=1;                else                    test=0;            }            else{                int num=i;                while(num!=0){                    if(num%10==4||num%100==62){                        test=1;                        number[i]=1;                        break;                    }                    num=num/10;                }            }            if(test==1){                                count++;            }            if(test==0){                number[i]=0;            }        }        cout<<m-n+1-count<<endl;    }    return 0;}
下面是里程碑代码:
#include<iostream>using namespace std;int number[1000000];int main(){memset(number,-1,sizeof(number));int n,m,test;while(cin>>n>>m){if((n==0&&m==0)||n>m)break;int count=0;for(int i=n;i<=m;i++){test=0;if(number[i]!=-1){if(number[i]==1)test=1;if(number[i]==0)test=0;}else{int num;num=i;while(num>0){if((num%10==4)||(num%100==62)){test=1;number[i]=1;break;}num/=10;}}if(test==1){count++;}else{ //if(test=0)number[i]=0;}} cout<<m-n+1-count<<endl;}return 0;}