e611 - 11661 - Burger Time
題目描述
題目描述了高速公路上餐廳 (R) 和藥局 (D) 的位置,以及同時有餐廳和藥局 (Z) 的位置。目標是找到最近的餐廳和藥局之間的距離。如果存在同時有餐廳和藥局的位置 (Z),則最短距離為 0。
解題思路
程式碼遍歷輸入字串,尋找餐廳 (R) 和藥局 (D) 的配對。對於每個餐廳,它會搜尋後面的藥局,並記錄距離。同樣,對於每個藥局,它會搜尋後面的餐廳,並記錄距離。程式會追蹤找到的最小距離,如果遇到同時有餐廳和藥局的位置 (Z),則將最小距離設為 0。最終,程式輸出找到的最小距離。
複雜度分析
- 時間複雜度: O(n^2)
- 空間複雜度: O(1)
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
string a;
while(cin >> a){
if(a=="0")break;
cin >> a;
int ans=a.length(),c=a.length();
for(int i=0;i<c;i++){
if(a[i]=='Z'){
ans=0;
break;
}
else if(a[i]=='R'){
int n=-1;
for(int j=i+1;j<c;j++){
if(a[j]=='D'){
n=j-i;
break;
}
}
if(n>0&&n<ans)ans=n;
}
else if(a[i]=='D'){
int n=-1;
for(int j=i+1;j<c;j++){
if(a[j]=='R'){
n=j-i;
break;
}
}
if(n>0&&n<ans)ans=n;
}
}
cout << ans << "\n";
}
}