第一篇博客,编程小白前来报道,请大神们多多关照!
在洛谷中刷题,发现一个花费我一个下午才找到的一个习惯错误——导致一直没办法被accept。
https://www.luogu.org/problemnew/show/P1563
下面是代码部分
#include "stdio.h"
#include "stdlib.h"
struct LL{
int bits;
char str[10];
};
int main()
{
int n,m;
int z,s;
int i,cur=0,sum=0;
struct LL a[100005];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d%s",&a[i].bits,&a[i].str);
}
for(i=1;i<=m;i++){
scanf("%d%d",&z,&s);
if((sum/n<=-1)||(sum/n>=1)) sum=sum%n;
if(sum>=0){
if(((a[sum].bits==1)&&(z==1))||((a[sum].bits==0)&&(z==0))) sum=sum-s;
else if(((a[sum].bits==1)&&(z==0))||((a[sum].bits==0)&&(z==1))) sum=sum+s;
}
else if(sum<0){
if(((a[n+sum].bits==1)&&(z==1))||((a[n+sum].bits==0)&&(z==0))) sum=sum-s;
else if(((a[n+sum].bits==1)&&(z==0))||((a[n+sum].bits==0)&&(z==1))) sum=sum+s;
}
}
if((sum/n<=-1)||(sum/n>=1)) sum=sum%n;
if(sum>=0) printf("%s",a[sum].str);
if(sum<0) printf("%s",a[n+sum].str);
return 0;
}
当几个个有关系的if连用时(如 if(sum>=0)和if(sum<0)),出第一个外,其他的if前面要加else。
之前写的代码这种情况加不加 else 都是可以得出正确答案的,但是对于这道题不知道怎么回事,死活不能accept。于是没办法,只能让自己写代码的习惯更加规规范。