CSU 1112: 机器人的指令【模拟题】

1112: 机器人的指令

Time Limit: 1 Sec  Memory Limit:
128 MB

Submit: 1858  Solved: 682

[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

湖南省第八届大学生计算机程序设计竞赛

原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1112

简单模拟就可以了,记录命令是关键,原来计算用数组保存命令,后来发现保存“命令效果”更方便一点,具体看代码。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[105];
int main()
{
    int T,n;
    //freopen("data/1112.txt","r",stdin);
    cin>>T;
    char ch[10];
    while(T--)
    {
        cin>>n;
        int x,p=0;
        for(int i=1;i<=n;i++)
        {
            cin>>ch;
            if(!strcmp("LEFT",ch))
            {
                a[i]=-1;
                p--;
            }
            else if(!strcmp("RIGHT",ch))
            {
                a[i]=1;
                p++;
            }
            else
            {
                cin>>ch>>x;
                p+=a[x];
                a[i]=a[x];
            }
        }
        cout<<p<<endl;
    }
    return 0;
}
时间: 2024-12-09 04:13:46

CSU 1112: 机器人的指令【模拟题】的相关文章

CSU OJ 1112机器人的指令 (湖南省12年省赛题)

 Welcome to CSU Online Judge! 1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 274  Solved: 97 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的

B - 机器人的指令

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1112 分析:感觉这就是一个简单的模拟题,要注意一下的就是SAME指令最好分段输入 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char a[10]; 6 int sum[101];//每走一步的位置变化 7 char c[10]; 8

CSUOJ 机器人的指令 (湖南省第八届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1112 简单的模拟题. <span style="font-size:18px;">#include<stdio.h> int main() { int as[100]; int t,n,m,i,x; char ch[20]; scanf("%d",&t); while(t--) { scanf("%d",

noip模拟题题解集

最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数 输入:输入文件只一行,两个正整数N,M( 1<N<50,2≤M≤5) 输出:输出文件只有一个正整数S,表示方案总数. 运用升格思想.设N个坑不会发生爆炸的方案数是f[N],那么我们假设N以前的坑的方案 都已知了,那么我们只需要考虑第N个坑如何放即可(顺

HDU 4028 The time of a day STL 模拟题

暴力出奇迹.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; #define ll __int64 #define N 42 ll n,m,ans;

cf428c 模拟题

这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会  计算最长的连续子序列的和 这要撸  模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 在替换的时候 每一个决策 都影响着 下一个决策  这样 存在谁与谁替换 这样的状态有 200!种    那就枚举每个区间这样就可以使得 我们所用替换方法得当  因为在替换中我们进行替换是对不同区间的 操作 比如 在替换序列之内的 数字的时候 其实操作的就是不同的区间 与外面的序列进行替换的时候 操作

TOJ1290 Poker Hands 模拟题

寒假期间抽空做的一道模拟题 难度不算大,把每种牌型分开处理,可以合并的步骤考虑合并. 代码比较丑陋,首次尝试Sport Programming的风格,结果搞了个不伦不类(手动笑哭) 1 #include <algorithm> 2 #include <bitset> 3 #include <cctype> 4 #include <complex> 5 #include <cstdio> 6 #include <cstring> 7 #

hdu 5641 King&#39;s Phone(暴力模拟题)

Problem Description In a military parade, the King sees lots of new things, including an Andriod Phone. He becomes interested in the pattern lock screen. The pattern interface is a 3×3 square lattice, the three points in the first line are labeled as

HDU 2414 Chessboard Dance(模拟题,仅此纪念我的堕落)

题目 模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!! #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char mp[10][10]; int d=-1;//0shang,1xia,2zuo,3you int x,y;//weizhi int weizhi(int i,int j) { if(mp[i][j]=='<'){x=