我来分析一下在校的一个小测试吧:
第一题
栅栏作画
去秋来,时光总是会改变一些东西。随着农夫Farme。。。
这题我只拿了个90分;
只能说没考虑周全;
看
保证所有数据在[0,100]区间且均为正整数。
0~100;是101个单位;
int n,a,b,c,d;
int k[100];
cin>>a>>b;
cin>>c>>d;
n=b-a;
for (int i=a+1;i<=b;i++)
k[i]=1;
n=n+d-c;
for(int i=c+1;i<=d;i++)
if (k[i]==1)
n=n-1;
cout<<n;
这还好老师善良,只有一个测试点考虑到,要不然就跟前10说拜拜了;
第二题
失去的母牛
题目描述
FJ丢失了他引以为傲的牛Bessie,他必须找到他!
幸运的是,农场间只有一条长路径,而且FJ知道。。。
虽然满分了;
但还是不舒服,我在这题上停留了将一小时,先写了个函数,结果光标一直说我这里错了cout>>kk;(想必观察仔细的人都看出了但我没有),以为是过程打错了,换了个过程,又错,找了半天,又全删了,然后换成了while,最后才找到错误;唉~~~程序如下:
int n,m,kk,k,i,o,kl;
cin>>n>>m;
i=1;kk=0;k=n;o=1;【i:移步;kk:步数;】
while (k!=m)
{
if(o%2==0) 【判断正负】
{
for(int j=1;j<=i;j++) 【一个一个退(不可能超时】
{
k=k-1;
kk=kk+1;
if(k==m)【如果找到,直接跳出】
{
cout<<kk;
return 0;
}
}
if(k!=m)【如过没找到】
i=i*2;o=o+1;
kk=n-k+kk;
}
else
{
for(int j=1;j<=i;j++) 【一个一个+】
{
k=k+1;
kk=kk+1;
if(k==m)【上同】
{
cout<<kk;
return 0;
}
}
if(k!=m)
i=i*2;o=o+1;
kk=k-n+kk;
}
k=n;
}
cout<<kk;
之前的函数还要简单,递推几行就够了;