CSU OJ 1112機器人的指令 (湖南省12年省賽題)
阿新 • • 發佈:2019-01-28
Submit: 274 Solved: 97
[Submit][Status][Web Board]
1112: 機器人的指令
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 274 Solved: 97
[Submit][Status][Web Board]
Description
數軸原點有一個機器人。該機器人將執行一系列指令,你的任務是預測所有指令執行完畢之後它的位置。
·LEFT:往左移動一個單位
·RIGHT: 往右移動一個單位
·SAME AS i: 和第i 條執行相同的動作。輸入保證i 是一個正整數,且不超過之前執行指令數
Input
輸入第一行為資料組數T (T<=100)。每組資料第一行為整數n (1<=n<=100),即指令條數。以下每行一條指令。指令按照輸入順序編號為1~n。
Output
對於每組資料,輸出機器人的最終位置。每處理完一組資料,機器人應復位到數軸原點。
Sample Input
2
3
LEFT
RIGHT
SAME AS 2
5
LEFT
SAME AS 1
SAME AS 2
SAME AS 1
SAME AS 4
Sample Output
1
-5
HINT
Source
湖南省第八屆大學生計算機程式設計競賽
昨天晚上我們進行第三次模擬訓練,做的是12年的省賽題,最終我們隊只做出了2道題,哎,晚上看了一下當年的rank版,差不多快是倒數了,還不行啊,有兩道題可以看出什麼演算法,但是不知道怎麼編,沒搞出來,對一些演算法沒能達到靈活運用的地步,還是要加油啊,這道題,昨天開始好像就我們隊做出來,對這個輸入輸出還是要注意啊。
這道題要注意的是它的輸入,我們用了分段輸入,好像他們都沒有分段輸入,我們就a了,可能昨天晚上這道題運氣還不錯;
下面是ac的程式碼:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char s[10],c[10]; int a[100]; int main() { int t,n,m; scanf("%d",&t); while(t--) { int sum=0; memset(a,0,sizeof(a));//這裡注意要清零 scanf("%d",&n); for(int i=0;i<n;i++) { cin>> s; if(s[0]=='L') a[i]--; if(s[0]=='R') a[i]++; if(s[0]=='S') { cin>>c; //注意是這裡分三段輸入; cin>>m; a[i]=a[m-1]; } } for(int i=0;i<n;i++) sum+=a[i];//積累每一次的資訊 printf("%d\n",sum); } return 0; }