# Simulation# Basic I/O

c315 - I, ROBOT 前傳

🔗 前往 ZeroJudge 原題

題目描述

題目要求模擬機器人的移動,根據給定的指令序列計算機器人最終停靠的位置座標 (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;
	}
}

Discussion