c315 - I, ROBOT 前傳
題目描述
題目要求模擬機器人的移動,根據給定的指令序列計算機器人最終停靠的位置座標 (x, y)。指令由方向 a 和移動距離 b 組成,a 的值決定移動方向,b 的值決定移動的格數。
解題思路
這題的解題思路非常直接。我們需要初始化機器人的位置 (x, y) 為 (0, 0)。然後,遍歷輸入的每一條指令,根據指令的方向 a 和距離 b 更新機器人的位置。具體來說:
- 如果
a為 0,則y增加b。 - 如果
a為 1,則x增加b。 - 如果
a為 2,則y減少b。 - 如果
a為 3,則x減少b。
遍歷完所有指令後,機器人的最終位置 (x, y) 就是答案。
複雜度分析
- 時間複雜度: O(N),其中 N 是指令的數量。因為我們需要遍歷所有指令一次。
- 空間複雜度: O(1),因為我們只使用了幾個整數變數來存儲機器人的位置和指令的數據,空間使用量不隨輸入規模的增長而變化。
程式碼
#include <iostream>
using namespace std;
int main (){
int N=0;
int a,b=0;
int x,y=0;
while(cin >> N){
for(int i=1;i<=N;i++){
cin>> a>> b;
if(a==0){
y+=b;
}
else if(a==1){
x+=b;
}
else if(a==2){
y-=b;
}
else if(a==3){
x-=b;
}
}
cout << x << " " << y << endl;
}
}