字符串读入有误求助

P1563 [NOIP2016 提高组] 玩具谜题

没看出字符串读入有什么问题。 ```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


|