<span>集训测试 找试场</span>

错误原因分析

这道题很简单,根据题目模拟就能对,根本不用怕时间和内存超限。
但是,这道题是四向移动,一开始被我写成了两向。
虽然后来发现了,但是!我只把left改了,没改right!
居然还能对两个也让我挺惊讶,但是只要改一个数字就是100了啊!

代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<iomanip>
using namespace std;

int main()
{
	//freopen("way.in", "r", stdin);
	//freopen("way.out", "w", stdout);
	
	bool f = 0;
	long long n = 0, fx = 0, b = 0, x = 0, y = 0;
	char a[105];
	
	cin >> n;
	
	for(long long i = 0; i < n; i++)
	{
		cin >> a;
		if(a[0] == 'l')
		{
			fx = (fx - 1 + 4) % 4;
		}
		else if(a[0] == 'r')
		{
			fx = (fx + 1) % 4;  //错误就出在这里,我原来写成了%2
		}
		else
		{
			b = 0;
			for(long long j = 0, z = strlen(a) - 1; a[j] != '\0'; j++, z--)
			{
				b = b + (a[j] - '0') * pow(10, z);
			}
			if(fx == 0)//四向输出
			{
				f = 1;
				y = y + b;
				printf("(%lld,%lld)\n", x, y);
			}
			else if(fx == 1)
			{
				f = 1;
				x = x + b;
				printf("(%lld,%lld)\n", x, y);
			}
			else if(fx == 2)
			{
				f = 1;
				y = y - b;
				printf("(%lld,%lld)\n", x, y);
			}
			else
			{
				f = 1;
				x = x - b;
				printf("(%lld,%lld)\n", x, y);
			}
		}
	}
	
	if(!f)
	{
		cout << "(0,0)";
	}
	
	cout << '\n';
	
	//fclose(stdin);
	//fclose(stdout);
	
	return 0;
}

教训

1.代码写完后一定要review!一定要review!一定要review
2.调试时一定要多尝试几组测试数据,很有可能就会发现错误。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务