Luo Gu P1563 玩具谜题

第一篇博客,编程小白前来报道,请大神们多多关照!

 在洛谷中刷题,发现一个花费我一个下午才找到的一个习惯错误——导致一直没办法被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。于是没办法,只能让自己写代码的习惯更加规规范。

猜你喜欢

转载自blog.csdn.net/qq_41717683/article/details/88166252