题目背景
木有背景……
题目描述
一串长度不超过 255255 的 PASCAL 语言代码,只有 a,b,ca,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];
。未赋值的变量值为 00 输出 a,b,ca,b,c 的值。
输入格式
一串符合语法的 PASCAL 语言,只有 a,b,ca,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 00。
输出格式
输出 a,b,ca,b,c 最终的值。
输入输出样例
输入
a:=3;b:=4;c:=5;
输出
3 4 5
说明/提示
输入的 PASCAL 语言长度不超过 255255。
思路
这题只要照着题目一步步做就可以了(暴力枚举):
第一步(还有第二步):
只付值数字代码:
#include<bits/stdc++.h>
using namespace std;
typedef std::string str;//将string简写成str
int a,b,c,p;
int main()
{
//加快输出输入
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
str s,t;
getline(cin,s);
t=":=";
p=s.find(t);//找不到时返回s.npos,在int里为-1
while(p!=-1)
{
if(isdigit(s[p+2]))//判断数字
{
if(s[p-1]=='a') a=int(s[p+2])-48;
if(s[p-1]=='b') b=int(s[p+2])-48;
if(s[p-1]=='c') c=int(s[p+2])-48;
}
p=s.find(t,p+2);
}
cout<<a<<" "<<b<<" "<<c;
return 0;
}
看懂了吗?(().find()函数要看懂)
第二步:
加上变量(直接判断):
#include<bits/stdc++.h>
using namespace std;
typedef std::string str;//将string简写成str
int a,b,c,p;
int main()
{
//加快输出输入
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
str s,t;
getline(cin,s);
t=":=";
p=s.find(t);//找不到时返回s.npos,在int里为-1
while(p!=-1)
{
if(isdigit(s[p+2]))//判断数字
{
if(s[p-1]=='a') a=int(s[p+2])-48;
if(s[p-1]=='b') b=int(s[p+2])-48;
if(s[p-1]=='c') c=int(s[p+2])-48;
}
else if(isalpha(s[p+2])) //赋值变量
{
char f1=s[p-1];
char f2=s[p+2]; //方便简写
if(f1=='a'&&f2=='b') a=b;
if(f1=='a'&&f2=='c') a=c;
if(f1=='b'&&f2=='a') b=a;
if(f1=='b'&&f2=='c') b=c;
if(f1=='c'&&f2=='a') c=a;
if(f1=='c'&&f2=='b') c=b;
}
p=s.find(t,p+2);
}
cout<<a<<" "<<b<<" "<<c;
return 0;
}