洛谷笔记 - P1597 语句解析

条件写死了是好做……

假如,我是说假如,有一道题形式与此题相似,但是要以多位数形式给变量赋值……

那可真是一道好题。

做题的时候有参考题解 P1597 【语句解析】 - @化学小哥的做法,但是不知道为啥,我在输入结束后程序不给我输出并停止执行,但在我 Ctrl+C 干进程后能看到第一个变量已经赋好了值……搞不懂。

道阻且长啊。

题目背景

木有背景……

题目描述

一串长度不超过 $255$ 的 PASCAL 语言代码,只有 $a,b,c$ 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];。未赋值的变量值为 $0$ 输出 $a,b,c$ 的值。

输入格式

一串符合语法的 PASCAL 语言,只有 $a,b,c$ 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 $0$。

输出格式

输出 $a,b,c$ 最终的值。

样例 #1

样例输入 #1

a:=3;b:=4;c:=5;

样例输出 #1

3 4 5

提示

输入的 PASCAL 语言长度不超过 $255$。

代码部分

//P1597 语句解析
//https://www.luogu.com.cn/problem/P1597

//条件写死了是好做……
//假如,我是说假如,有一道题让给多位数赋值……那可真是一道好题……
//https://www.luogu.com.cn/record/87683311

#include<iostream>
using namespace std;
int n[3];
string cc;
int main(){
    cin>>cc;
    for(int i=0;i<cc.length();i++){
        if(cc[i]=='='){
            int op=cc[i-2]-'a';
            n[op]=cc[i+1]>='0'&&cc[i+1]<='9'?cc[i+1]-'0':n[cc[i+1]-'a'];
        }
    }
    printf("%d %d %d\n",n[0],n[1],n[2]);
    return 0;
}
Just Programming With ♥️ & Peace
使用 Hugo 构建
主题 StackJimmy 设计