在一条路上,有饭店也有药店,一个位置可以兼而有之也可以一个都没有。
现在的问题是:距离最近的一个饭店和一个药店的距离是多少?
首先,如果有一个地方两种店都有,那么答案为 000。
其次,每次输入时记录一下上一个饭店和药店的位置,每一次位置更新时算一下现在前面的饭店和药店之间的距离,然后取最小值即可。
#include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <ctime> #include <string> #include <cstring> #include <cctype> #include <cmath> #include <vector> #include <stack> #include <queue> #include <deque> #include <map> using namespace std; typedef long long ll; typedef pair<int, int> pii; const int inf = 0x3f3f3f3f; #define elif else if #define il inline int l; int main() { while (cin >> l, l != 0) { char c; int ans = inf; int lr = ~inf, ld = ~inf; for (int i = 1; i <= l; i++) { cin >> c; if (c == 'R') lr = i; elif (c == 'D') ld = i; elif (c == 'Z') lr = ld = i; if (lr > 0 && ld > 0) ans = min(ans, abs(lr - ld)); } cout << ans << endl; } return 0; }
提交评论