解题思路:

1.简单穷举所有情况


捕获.PNG


捕获.PNG2.PNG


2.用DFS函数按要求格式输出(徒有其名,简单的show功能啦)


[19/20]aa-bb-cc      ———(注意标准输出要补零,eg: 2002-02-02)


3.处理重复:AABBCC相同、AACC相同、AABB相同;(其他按常规情况处理)


4.排序:升序


注意事项:注意19和20打头的区别,并排序筛选重复年份;


参考代码:

#include <iostream>//此题注意重复问题 
using namespace std;
int data[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int DFS(int aa,int bb,int cc,int year)//以年月日输出 
{
	if(aa>=0&&aa<=99)//第一元素年份合法
	{
		if(year%100!=0&&year%4==0||year%400==0) data[1]=29;//闰年处理
		else data[1]=28;
		if(bb>=1&&bb<=12&&cc>=1&&cc<=data[bb-1])//第二元素月份、第三元素天数合法 
		{
			if(year>=2000&&year<=2059)//20世纪的年份 
			{
				printf("20%02d-%02d-%02d\n",aa,bb,cc);
			}
			else
			{
				printf("19%02d-%02d-%02d\n",aa,bb,cc);
			}
		}
	}
}
int main()
{
	int AA,BB,CC,Y1,Y2;
	scanf("%d/%d/%d",&AA,&BB,&CC);//C语言格式化输入
	//year有 CC AA,month有 BB AA,day有 CC BB AA  
	if(AA>=60&&AA<=99)//AA产生的year1
	{
		Y1=19*100+AA;
	}
	else
	{
		Y1=20*100+AA;
	}
	if(CC>=60&&CC<=99)//CC产生的year2
	{
		Y2=19*100+CC;
	}
	else
	{
		Y2=20*100+CC;
	}
	if(AA==BB&&BB==CC)// AA,BB,CC 相同
	{
		DFS(AA,BB,CC,Y1);
		return 0;
	}
	if(AA==BB&&BB!=CC)// AA,BB 相同
	{
		if(Y1>Y2)
		{
			DFS(CC,AA,BB,Y2);
			DFS(AA,BB,CC,Y1);
		}
		else
		{
			DFS(AA,BB,CC,Y1);
			DFS(CC,AA,BB,Y2);
		}
		return 0;
	}
	//BB==CC是正常的输出
	if(AA==CC&&AA!=BB)// AA,CC 相同
	{
		if(AA>BB)
		{
			DFS(AA,BB,CC,Y1);
			DFS(CC,AA,AA,Y2);
		}
		else
		{
			DFS(CC,AA,AA,Y2);
			DFS(AA,BB,CC,Y1);
		}
		return 0;
	 } 
	if(Y1<Y2)//如果AA作为年份最小
	{
		DFS(AA,BB,CC,Y1); 
		if(BB>AA)
		{
			DFS(CC,AA,BB,Y2);
			DFS(CC,BB,AA,Y2);
		}
		else
		{
			DFS(CC,BB,AA,Y2);
			DFS(CC,AA,BB,Y2);
		}
	} 
	else//如果CC作为年份最小 
	{
		if(BB>AA)
		{
			DFS(CC,AA,BB,Y2);
			DFS(CC,BB,AA,Y2);
		}
		else
		{
			DFS(CC,BB,AA,Y2);
			DFS(CC,AA,BB,Y2);
		}
		DFS(AA,BB,CC,Y1); 
	}
	return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论