今天可以说是非常sad的一天了。
本来想先研究每日算法的题,在自己看看刷点题。打开了pta看见学校团队挂了新题,就去做。
我看排名,感觉大题应该不难3、4几乎是全过,1分值虽高但是过的也挺多。就从3、4做起,第三题果然很简单过的很快,然后第四题,兔子繁衍的题应该都知道这道题就不贴了。首先我来来回回自己做了很多遍连样例都没想明白怎么回事,没错要不然多几个要不然少几个,简直心态爆炸。然后去百度了一下思路(当然我感觉特别不推荐做题的时候去百度,不管是思路还是代码,还是尽量自己完成最后一起查比较好。但是我真的没忍住),然后发现了这题是斐波那契数列。这数列多有名啊,感觉一看这几个字脑子里差不多就应该有代码才对。然后开始写。他这个题不是说问你几个月有几只兔子而是反过来,问你现在有n兔子求至少几个月。然后我当时就像先把数列写出来用一个数组存着数,然后再判断n和这个数组的数就行了。然后不敢相信我用了能有半个小时一直在处理数组越界问题,一开始写完觉得是ok的,然后我试了3只的时候不行,因为我写的for循环是到n,因为我觉得到n肯定够用啊(样例给的30只,所以觉得n=30,斐波那契数列才用到前几个数,for循环求到30个数根本就是用不了的用)。结果n=3的时候,第三个数->2,就不出结果了,然后我就在想怎么处理,就把循环判断条件+1还是+2了觉得这样肯定够,然后可能有一些 [i-1] [i-2]之类的所以数组越界问题一直没有处理好。导致这道题从开始做到这里花了一个小时了,什么结果都没有。然后暂时性选择放弃。最后是看题说给的n最大10000所以我先求数列,大概20左右就能到10000+了,然后我为了防止出问题取到了25,再用上面的方法就过了。
然后,就开始了,今天的第二个1h的白痴时间。
有一个小题,我记得去年的时候应该做过这个题,有点印象,心里还有些窃喜。就是过生日,从n开始到现在,每次吹年龄根蜡烛,共236根,问你从几岁开始过的。我一开始可能没看仔细觉得直接求和的题啊,枚举出来之后呢,发现没有236 好像最近的是231和多少的。我看了题之后知道错了开始改,但是真的脑子被糊住了,你让我现在说我一个小时都写了什么我都说不出来,反正就是想了很多错误的代码没法得出结果,最后放弃到计算器,也没算出来。。。然后 我最后想的是你现在m岁,从n开始过,吹的蜡烛数应该是Sm-Sn(S表示的是从1-x求和),然后也没有结果,我就特别纳闷。然后手算举例了几个结果发现出错了应该是Sm-Sn-1,然后得出26-33求和236,从26过。然后我 特别懊恼,为什么呢?因为我之前算出过这个26了,代码出来了一遍,我自己用计算机也从26算了,但是可能是我自己按错了键,导致我觉得是错的。又白费一个小时。
接着做题虽然说没遇到这么白痴的错误了,但是也是感觉不是很顺。比较开心的是这次代码填空做的还不错,虽然现在还没截至没法看答案,但是本机跑的还是ok的。
最后就是那道大题,也不难,四平方和的题。但是呢,他说的是4个数依次排序要最小的那一套。但是我的就是很多套结果,(一个是abcd四个数位置的问题,另一个就是有很多种方案不是最小的),这个问了同学,他说的是用return; 我自己理解的应该是我用的for循环每个数都从0开始,所以你找到的第一个应该就是最小的而且为有序的,所以找到一个就行return返回就ok了还省时间。这个return 还真是 我以前从来不用的,可能自己学的时候没学好所以不会用。上面说的兔子,1只的时候他返回的月份是1 2,这是不正确的 因为他问了最少几个月吗,但是我当时想不到好办法,所以强加了if(n=1)...else{},然后知道这个return之后我就重新改了这个题果然顺眼了许多啊。另一个问题就是超时,没错我用的四个for循环 意料之中的超时,但是没想到只过了2个样例,本来想要是就2-3没过就不管了,但是这个太少了 必须重看。然后用了
1 m=Math.sqrt(n-i*i-j*j-k*k);
2 if(m==(int)m){
3 System.out.println(i+" "+j+" "+k+" "+m);
4 return;
5 }
取代了最后一个循环,就过了。然后就不贴这些题了,一个是因为结果还没出来,另一个是因为还没讲题我觉得写的不太好可能别人用更好的方法,最后就是因为我这次class命名用的中文巨好找自己的代码。没事我就自己翻着看看了,不用发上来。啊哈哈。
然后做完了所有的题,我去看排名,看到了一个眼熟的id(我的朋友~)。天,我去看了前几次她做的题,这次是第一其他也都是很靠前的位置,而且大题所有的都过了。然后在这个查找的过程里,又发现了我的另一个朋友差不多也是这样的。还看到一个去年一起懵逼听不懂一块翘课的朋友,没错,人家也是这样。在看我,这么多次练习了,只做了两次还包括了这一次,上次大题只挑了最最最简单的送分题过了,代码10行以内不夸张,这次算是逼着自己写了一下午给写出来了。真的是差距啊,所以特意写了这篇,希望自己长点脑子,长点心。
另外,我感觉才坚持了一天的每日算法可能要放一放了,也不至于完全不做,但是可能会不把他当重点了,只会最后剩一个小时给他,如果有时间就更,没时间就不更。我觉得现在做题完全没感觉,可能要准备从明天开始去蓝桥联系系统刷题了,完全没有手感。虽然感觉现在会的好像比去年多,但是,不夸张去年多时候做这种填空题真的闭着眼都能做了,今天竟然花了一个多小时 。。。。
真的是,少看电视多学习啊,你差的太多,太堕落了。认真起来吧,时间已经不多了。