愿尔安然无恙


私信TA

用户名:H2130819045

访问量:13754

签 名:

向往星辰大海,喜欢落日晚风。

等  级
排  名 63
经  验 10707
参赛次数 16
文章发表 56
年  龄 20
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

不想改bug ^_^

解题思路:

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 人评分

  评论区

  • «
  • »