本来是一道水题,可是最后wa了,找原因找不到,感觉自己写的也没错啊,可是上网搜此题的解题思路,大家都提到了数位DP,第一次接触这个词汇,顿时心生凉意,一道水题也要从新学习新的知识点,最终还是按着自己的思路来,最终找到了错误的原因,是因为自己的细节没有处理好。
求一段区间的问题,可以考虑是否能用数组来解决。
最后求区间用数组做差的时候应该减去区间的前一位,结果简单的想减去区间然后加1,这个错误困扰了一上午。晕。。。
#include<stdio.h>
int num[1000002];
int main()
{
num[0]=1;
for(int i=1; i<1000001; i++)
{
int flag=0;
int f=0;
int a=i;
while(a)
{
int z=a%10;
a/=10;
if(z==4)
{
flag=1;
break;
}
else if(z==2)
f=1;
else if(z==6&&f==1)
{
flag=1;
break;
}
else
f=0;
}
if(flag==0)
num[i]=num[i-1]+1;
else
num[i]=num[i-1];
}
int n,m;
while(scanf("%d%d",&n,&m),n+m)
{
printf("%d\n",num[m]-num[n-1]);
}
return 0;
}
本文探讨了一次编程经历中遇到的难题,原本以为是简单问题,但因忽视了数位DP概念而陷入困境。通过深入学习并找到问题所在,作者最终解决了区间求解问题。重点强调了在编程过程中细节处理的重要性。
342

被折叠的 条评论
为什么被折叠?



