今天写这篇博客不是为了分享,防止自己之后会忘掉,而是作为一种做题的经验来谈的,一不小心再做题的时候发现了一个简单但是沉重的错误。
有的时候想想做题的时候能够A掉几道,感觉是不公平的,以前一直这么认为,但是现在好像明白了,为什么会这么评判,因为这样完全就是为了整治像我这样的傻子。。。
对于那些个人的比赛(里面肯定不乏水题),如果一直从头开始做做到末尾,这么傻的事应该没有几个人会做,但是我做过,并且还是在某一次的重要的考试中,以身试法让我身心俱粉,成绩可想而知,太过自信让我完全的败了,嗯,之后一直都再提醒自己,一定在做题的时候见者软的柿子捏(自以为好像聪明了);好的,如果这样算傻的话,那接下来的就不知道用什么词来形容了,因为这一次我再次的犯了一个错,做题总是看到什么感觉稍微简单点就开始敲,后面的题从来不看的,结果这道题没有想象的那么简单,然后就看着别的少数几个人A了然后加上开始的错觉就开始憋,最后智商受限(这一次好像还不是智商的事,是开始的时候想都没怎么好好想想),结果就是玉石俱焚,多么痛的领悟。。。
好像正确的方法是什么,那就是再每一次做题的时候都先用大约几分钟的时间把所有的题目先看一遍,或者是先在别人A的题目中先找A掉的(反正我不相信这世界没有比我聪明的,会先做难题),这样的话纵观全局,结果一定比其他方式要好的多。。。
贴一道简单题,但是开始的时候瞎敲代码给我造成巨大伤害的题带给我的领悟。。。
不过注意要用long long 否则可能通过不了。。。
Description
Input
Output
Sample Input
3 3
0 0 0
0 1 0
0 0 0
Sample Output
2
#include <iostream> #include <cstdio> #include <cmath> #include <memory.h> #include <cstring> #include <string> using namespace std; int m,n; long long int a[105][105]; long long int f[105][105]; void fun(int x,int y){ if(x==m-1&&y==n-1){ f[x][y]=1; return ; } if(x+1<=m-1&&a[x+1][y]!=1){ f[x][y]+=f[x+1][y]; } if(y+1<=n-1&&a[x][y+1]!=1){ f[x][y]+=f[x][y+1]; } } int main (){ while(scanf("%d",&m)!=EOF){ scanf("%d",&n); memset(f,0,sizeof(f)); for(int i=0;i<m;i++) for(int j=0;j<n;j++) scanf("%d",&a[i][j]); int i,j; for(i=m-1;i>=0;i--){ for(j=n-1;j>=0;j--) if(a[i][j]!=1) fun(i,j); } cout<<f[0][0]<<endl; } return 0; }
校赛后的我依然不能平复自己的心情,至少6道(一道考试前晚上刚看过的原题,我很大度的看都没看,更别说做了),因为上面接二连三的壮举,结果...
比赛给我带来的影响绝不止于此,也一定不止于此,但是我会努力,会努力,不为任何眼光的努力。。。
用这篇博客来给自己长点记性。。。接二连三的事让我醉了哭了。。。