刚入门C语言一个月,受到一个同为新手的网友的创作激情而感动,特此也发一篇题解作为自己的C语言的博客启程。
题目
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴
输入格式
输入包括 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出格式
一个数字。如果不会不高兴则输出 0,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,7)分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
首先题目字数繁多,选取关键信息
输出为一周的每天的在校和在外的课外辅导时间,已知要输出的次数为一周(即七次)。
津津只要一天学习超过八小时即为不高兴。
超过的时间越长就会越不高兴。
最终输出 最不高兴的一天。
####首先来个一瞬间能想得出来的笨法子(三次循环,时间复杂度为3n,这样便于理解);
首先考虑要运用的变量,首先在第一次循环中将学校内的学习时间和校外的学习时间给输出。
(设以为变量ab);
用一个sum变量将ab变量相加,每次循环进行对八小时的比较,大于就将这个数存在一个数组里面
(设为num[10],记得初始化);
因此得到第一个循环;
此时在相应的天数位置,只要大于8小时的位置都有了相应的不高兴的时长,接下来的
第二次循环将他们进行比较;用一个max变量进行存储最大的数;
这次循环将max保留在数组里,其他都进行了初始化。
第三次循环将最大的天数输出出来,此时还有一种情况,就是当所有天数里的时间都未超过八小时
则要输出0,因此在设一个变量c作为判断依据;
如果变为1则输出最不高兴的天数,反之则输出0。
tips:因为数组是从下表0开始进行的,所以在最后输出的天数要在数组的下表上加1。
这是第一个题解,看起来相当繁琐,所有的条件都分开进行的循环。
其实是可以用一次循环进行解决。
接下来直接放代码。
好了,一个循环就可以解决(时间复杂度为n);
运用一个day和&&既可以把第二个和第三个循环给省略,将day初始化即可以省略如果没有
不高兴的天数而输出0的if判断。
新手初来乍到,还请多指教。如有错误请指正。