目录
2.P1085 [NOIP2004 普及组] 不高兴的津津:
介绍:
作者:几冬雪来
时间:2022年12月14日
类型:刷题
题目来源:洛谷题单分支与循环
——几冬雪来.如是说
前言:
相信同学们C语言已经学完了分支与循环部分了吧,既然学完了这个部分,那我们就来刷一些关于这一部分的题目吧。对于刷题的网站,我推荐洛谷和牛客,洛谷的题比较难且有挑战性其中不乏有普及题,牛客的题目偏向于基础,更适合新手上手,而今天我的题目来自洛谷的分支与循环模块的题单中的题。
注:本作者也是一个小白作者,在博客中我也有一些题我觉得有意义和价值,但是自己写出来并没有拿到全对的分数,即便如此我也会写出来供大家参考思路,如果有人提出修改意见我也会进行参考和改进。那么接下来开始吧。
这些题作者并没有按照顺序来解答和书写,请读者见谅。
题目:
1.P5713 【深基3.例5】洛谷团队系统:
然后根据题目写出我的理解。
int main() { int ti = 0; scanf("%d", &ti);//题目的数量 int time1 = 5 * ti;//第一种方法所需要的时间 int time2 = 3 * ti + 11;//第二种方法所需要的时间 if (time1 < time2)//判断 { printf("Local"); } else { printf("Luogu"); } return 0; }
这一题比较简单,我们只需要先初始化题目的数量,再用题目的数量进行方法一和方法二的相加相乘,最后得出来的两个时间进行判断大小即可。
这道题的正确率也是达到了满分。
2.P1085 [NOIP2004 普及组] 不高兴的津津:
这道题的题目如下:
要让我们判断津津不高兴的星期,从星期一开始计算,如果有两天以上的不高兴的日子,则输出靠前的那一天,也就是如果她星期二和星期四都不高兴的话则我们输出2。
接下来我就写一写我的思路。
int main() { int i = 0; int arr1[100]; int arr2[100]; for (i = 1; i <= 7; i++)//循环星期一到星期日 { scanf("%d %d", &arr1[i], &arr2[i]);//输出两个值前一个是学校的时间,后一个是补习班的时间 } for (i = 1; i <= 7; i++)//再次循环星期一到星期日 { if (arr1[i] + arr2[i] > 8)//如果某星期的时间加起来大于8小时则结束循环 { break; } } printf("%d", i);//打印星期 return 0; }
我也看过一些这道题目的解法 (但是都是c++的解法我现在看不懂,而且超级长QAQ),我这个代码虽然可以成功输出,可是我的代码也有不足的地方。我在与那些题解的方法对比后发现,我的代码相比较与他们的代码就是他们有判断有几个,或者哪几个星期津津的不高兴,最后再比较哪个星期比较靠前。而我这个只是判断了第一个不高兴的星期就将其输出,虽然逻辑上行得通,但是如果代码一改,要求输出不高兴的天数我的这个代码就可以作废了。
最后洛谷的评分也没有出乎我的意料,虽然逻辑可行但是太过片面。最后也没能拿到满分。
3. P1424 小鱼的航程(改进版):
下面我就先放出我们的题目。
这道题十分方便理解。简单粗暴就是判断小鱼在限定天数游泳的公里数,星期一到星期五游泳,星期六和星期日休息。
下面是我的思路。
int main() { int z = 0; int d = 0; scanf("%d %d", &z, &d);//输出初识星期和限定天数 int i = 0; int s = 0; for (i = 1; i <= d; i++)//从第一天到限定的天数,每过一天i++ { if (z != 6 && z != 7)//如果不是星期六或者星期日游泳 { s += 250;//每次250公里 } if (z == 7)//如果z为星期天的话将z变成1也就是星期一,这里不能大于7 { z = 1;//如果条件是这里大于7,if不会执行,else执行z++,星期变成了星期八,但是我们没有这个星期 } else { z++;//如果是星期一到星期六则往后一天 } } printf("%d", s);//输出公里数 return 0; }
这个代码我们注意两个点,一个就是要新初始化一个i进行1--10天的循环。(注:不能直接将z变成循环条件,因为z在for语句中有改变,最后程序可能死循环)
第二个我们要注意的点就是(z==7)的时候要将z变成1。防止出现我们理论上没有的星期八的存在。
只要注意好这两个点,我们这道题就可以拿到满分。最后我的代码也是印证了我的猜想。
到此就是我要讲的分支与循环洛谷的3道题了,希望我的这篇博客可以给在座的同学们提供一定的帮助,同时如果我的代码有不足的地方也请指正。