C语言,星座匹配问题
Description星座学描述了4种元素,每种元素包含3个星座。分别是“火”(白羊座、狮子座、射手座)、“土”(金牛座、处女座、摩羯座)、“气”(双子座、天秤座、水瓶座...
Description
星座学描述了4种元素,每种元素包含3个星座。分别是“火”(白羊座、狮子座、射手座)、“土”(金牛座、处女座、摩羯座)、“气”(双子座、天秤座、水瓶座)和“水”(巨蟹座、天蝎座、双鱼座)。同一种元素的星座是最合得来的。输入两个人的生日,判断是否“合得来”
星座日期对照表:
水瓶:1.20-2.18 双鱼:2.19-3.20 白羊:3.21-4.19 金牛:4.20-5.20
双子:5.21-6.21 巨蟹:6.22-7.22 狮子:7.23-8.22 处女:8.23-9.22
天枰:9.23-10.23
天蝎:10.24-11.21 射手 :11.22-12.21 摩羯:12.22-1.19
Input
第1行是测试数据的组数n,后面有n行,每行有四位数,用空格隔开,其中前两个数表示第一个人的生日(月、日),后两个数表示第二个人的生日。
Output
输出n行,每行显示匹配结果,“合得来”输出“Y”,否则输出“N”。
Sample Input
2
12 12 10 21
6 5 9 28
Sample Output
N
Y
这题有什么方便一点的算法 展开
星座学描述了4种元素,每种元素包含3个星座。分别是“火”(白羊座、狮子座、射手座)、“土”(金牛座、处女座、摩羯座)、“气”(双子座、天秤座、水瓶座)和“水”(巨蟹座、天蝎座、双鱼座)。同一种元素的星座是最合得来的。输入两个人的生日,判断是否“合得来”
星座日期对照表:
水瓶:1.20-2.18 双鱼:2.19-3.20 白羊:3.21-4.19 金牛:4.20-5.20
双子:5.21-6.21 巨蟹:6.22-7.22 狮子:7.23-8.22 处女:8.23-9.22
天枰:9.23-10.23
天蝎:10.24-11.21 射手 :11.22-12.21 摩羯:12.22-1.19
Input
第1行是测试数据的组数n,后面有n行,每行有四位数,用空格隔开,其中前两个数表示第一个人的生日(月、日),后两个数表示第二个人的生日。
Output
输出n行,每行显示匹配结果,“合得来”输出“Y”,否则输出“N”。
Sample Input
2
12 12 10 21
6 5 9 28
Sample Output
N
Y
这题有什么方便一点的算法 展开
2个回答
展开全部
1)建立两个数组 a[2];b[2]分别存储第一人的月,日,第二人的月,日,从合理性角度分析
月a[0]∈[1,12],a[1]也就是日期根据a[0]决定,a[0]是1,3,5,7,8,12情况下,a[1]不能是31.
a[0]是2的情况下,a[1]不能超过29.如果输入29要减去1(为了后面的日期差计算星座做基础)
2)第一个函数int sum_day (int* a),把刚才输入作为形参传入,按照一定公式计算N月M日是这年的第K天,然后返回这个日期。
3)因为每个星座之隔都是30天(2月按照28来看)。把这个天数,假设是返回的k,那么分类讨论,
第一种,k<19,那么直接知道是摩羯
第二种 switch ((k-19)/30) {
case 0:水瓶
case 1:双鱼
........
4)匹配的规则,我们已经知道双方的星座了,至于是否合得来用一个二维数组来存放情况
int c[12][12];横坐标的0~11分别表示水瓶~摩羯,纵坐标也是一个道理。比如
a[0][0]就是水瓶配水瓶,c[11][11]就是摩羯配摩羯。如果c[0][0]是存放1,则表示水瓶配水瓶是合适的,如果是0则表示不合适,1还是0由编程人员设置。
3)输出,(k-19)/30就是下标,例如c [(k1-19)/30][,(k2-19)/30],那么这将表示这个坐标的数据,1
表示合适,0表示不合适,k是表示这一年的第k天。
月a[0]∈[1,12],a[1]也就是日期根据a[0]决定,a[0]是1,3,5,7,8,12情况下,a[1]不能是31.
a[0]是2的情况下,a[1]不能超过29.如果输入29要减去1(为了后面的日期差计算星座做基础)
2)第一个函数int sum_day (int* a),把刚才输入作为形参传入,按照一定公式计算N月M日是这年的第K天,然后返回这个日期。
3)因为每个星座之隔都是30天(2月按照28来看)。把这个天数,假设是返回的k,那么分类讨论,
第一种,k<19,那么直接知道是摩羯
第二种 switch ((k-19)/30) {
case 0:水瓶
case 1:双鱼
........
4)匹配的规则,我们已经知道双方的星座了,至于是否合得来用一个二维数组来存放情况
int c[12][12];横坐标的0~11分别表示水瓶~摩羯,纵坐标也是一个道理。比如
a[0][0]就是水瓶配水瓶,c[11][11]就是摩羯配摩羯。如果c[0][0]是存放1,则表示水瓶配水瓶是合适的,如果是0则表示不合适,1还是0由编程人员设置。
3)输出,(k-19)/30就是下标,例如c [(k1-19)/30][,(k2-19)/30],那么这将表示这个坐标的数据,1
表示合适,0表示不合适,k是表示这一年的第k天。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询