欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 蓝桥杯备考:枚举算法之回文日期

蓝桥杯备考:枚举算法之回文日期

2025/2/5 20:59:33 来源:https://blog.csdn.net/2301_81772249/article/details/145425206  浏览:    关键词:蓝桥杯备考:枚举算法之回文日期

我们有三种枚举的方法

第一种方法就是枚举日期,如果日期是回文的,再判断它是否合法,时间复杂度是1*10的八次方

第二种方法是只枚举年份,然后把年份后面的回文序列补上,再看是否合法,这种时间复杂度应该是1*10的四次方

第三种方法是枚举月日,这时候就是12*31=3的10次方的时间复杂度,是最优解法了,具体方法就是我们先枚举出所有的这个月日,然后把前面的回文序列补全,看是否在起始日期和终止日期中间,如果是的话计数器++

我们怎么把日期转换为回文序列的年份呢,比如1231,12是月 31是日,我们想把它变成1321,就日%10*1000+日/10*100 + 月%10*10+月/10 我们就得到了1321,我们要把这两个数字合并起来,所以我们就让1321*10000+月*100+日

#include <iostream>
using namespace std;int x,y;
int day[] = {0,31,29,31,30,31,31,31,30,30,31,30,31};
int main()
{cin >> x >> y;int ret = 0;for(int i =1;i<=12;i++){for(int j = 1;j<=day[i];j++)//1231  1321{int k = j%10*1000+j/10*100+i%10*10+i/10;int num = k*10000+i*100+j;if(num>=x && num<=y) ret++;}}cout << ret << endl;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com