本文主要是介绍[2021.11.14]UPC-计算机2021随堂测验第四场-21235 Problem H 自动找人系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
maoge现在转到了警局工作,现在他被要求开发一个找人系统。给定三个参数a,b,c,表示年,月,日,表示一个时间节点。他要找出在两个时间节点之间的时间(两个时间节点本身也包括在内)。现在给定两个时间节点和1个时间发生的时间,他要判断这个时间是否在这个时间段之中。
maoge又双叒叕找到了你来帮忙。
输入
输入三行,三个时间,每行有三个数,表示年月日。前两行表示两个时间节点(不一定按照第一个小于第二个的顺序给出),最后一行是这个时间发生的时间。保证合法
输出
输出一个“Yes”或者“No”表示是否在这个时间段之中。
样例输入 Copy
2007 1 1 2007 12 31 2007 3 22
样例输出 Copy
Yes
题解
其实并没有太困难的地方,就是各种判断写得太绕了,可能是我的方法太过于拙劣。也有同学通过转换为天数的方式来进行判断,分享一下我的做法,抛砖引玉~
如此简单的目的..---判断事件是否发生在指定时间段,居然需要这么复杂的判断结构..是我的代码写的太过于臃肿杂乱了吗?... sad : (
代码如下 : )
如有纰漏,请多多指正!!
#include <cstdio>
struct t{int y,m,d;
};
int main() {bool flag;t a,b,s,e,h;scanf("%d %d %d",&a.y,&a.m,&a.d);scanf("%d %d %d",&b.y,&b.m,&b.d);scanf("%d %d %d",&h.y,&h.m,&h.d);if(a.y<b.y){ //s为起始时间,e为终止时间,一下判断用来判断a,b两者谁为起始与终止。s=a;e=b;}else if(a.y>b.y) {s = b;e = a;}else{if(a.m<b.m){s=a;e=b;}else if(a.m>b.m){s=b;e=a;}else{if(a.m<b.m){s=a;e=b;}else{s=b;e=a;}}}if(h.y>=s.y&&h.y<=e.y){if(s.y==e.y){if(s.m==e.m){if(h.d>=s.d&&h.d<=e.d){flag=true;}else flag=false;}else{if(h.m>=s.m&&h.m<=e.m){if(h.m==s.m){if(h.d>=s.d)flag=true;elseflag=false;}else if(h.m>s.m&&h.m<s.m)flag=true;else if(h.m==e.m){if(h.d<=e.d)flag=true;elseflag=false;}}else flag = false;}}else if(h.y==s.y){if(h.m==s.m){if(h.d>=s.d){flag=true;}else flag=false;}else if(h.m>s.m){flag = true;}else flag = false;}else if(h.y>s.y&&h.y<e.y)flag = true;else if (h.y==e.y){if(s.m==e.m){if(s.d<=e.d)flag=true;elseflag=false;}else if(s.m<e.m)flag=true;else flag=false;}}else flag=false;if(flag)printf("Yes");elseprintf("No");return 0;
}
这篇关于[2021.11.14]UPC-计算机2021随堂测验第四场-21235 Problem H 自动找人系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!