奇怪的逻辑错误
查看原帖
奇怪的逻辑错误
400618
realec楼主2021/7/16 17:17

首先来看我ac的代码

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int a[100050];
vector <string> b;
int main ()
{
	int m,n;
	string t;
	cin >> n >> m;
	for (int i = 0 ; i < n; ++i)
	{
		cin >> a[i];
		cin >> t;
		b.push_back(t);
	}
	int flag = 0;
	for (int i = 0 ; i < m ; ++i)
	{
		int stt,step,chao;
		cin >> stt;
		int dir;
		chao = a[flag % n];
		if (chao==stt) dir = -1;else dir = 1;		
		cin >> step;
		flag += step*dir;
		while (flag <0)flag +=n;
		flag %= n;
	}
	cout << b[flag % n];
	return 0;
} 

然后来看看原本我写错的代码

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int a[100050];
vector <string> b;
int main ()
{
	int m,n;
	string t;
	cin >> n >> m;
	for (int i = 0 ; i < n; ++i)
	{
		cin >> a[i];
		cin >> t;
		b.push_back(t);
	}
	int flag = 0;
	for (int i = 0 ; i < m ; ++i)
	{
		int stt,step,chao;
		cin >> stt;
		int dir;
		chao = a[flag % n];
		if (chao==stt) dir = -1;else dir = 1;		
		cin >> step;
		flag += step*dir;
	}
		while (flag <0)flag +=n;
		flag %= n;
	cout << b[flag % n];
	return 0;
} 

可以注意到我只是把调正这一步挪到了循环外面题目就出错了,有没有大佬可以解释一下为什么QAQ

2021/7/16 17:17
加载中...