没看出字符串读入有什么问题。
```diff
@@ -12,17 +12,17 @@
cin >> mn[i].out;
cin >> job[i];
}
- npos = 1;
+ npos = 0;
while (m--) {
int r; int num;
cin >> r >> num;
- if (r == mn[npos].out) {
+ if (r != mn[npos].out) {
npos += num;
- if (npos >= n) npos -= npos;
+ if (npos >= n) npos -= n;
}
else {
npos -= num;
- if (npos < 0) npos += npos;
+ if (npos < 0) npos += n;
}
}
cout << job[npos] << endl;
```
by ud2_ @ 2022-09-08 20:51:54
@[ud2_](/user/206953) 噢噢噢噢
好像是devc++的问题
已经A了 感激不尽
by CLCK @ 2022-09-08 21:11:41
else {
npos -= num;
if (npos < 0) npos += npos;
}
这里是用来干嘛的???
蒟蒻不懂
@[CLCK](/user/323183)
by zxyaa @ 2022-10-11 09:13:53
@[zxyaa](/user/690291)
呃呃 打错了()
```
else {
npos -= num;
if (npos < 0) npos += n;
}
```
就是因为整个小人的输出应该是一个圆 但是在向左的时候可能会出现下标变成负数 很显然会segmentation fault
所以这里在减了之后变成负数的地方加上n 也就是从圆的另外一段开始移动 就避免了越界不合法的情况
by CLCK @ 2022-10-13 15:00:40
谢谢大佬,我明白了
by zxyaa @ 2022-10-13 17:06:07