关于今年普及组T3的读入问题
查看原帖
关于今年普及组T3的读入问题
250699
mot1ve楼主2020/11/11 16:22

请问这样读入为什么不行呢?

//变量转化为数字
//存到栈里 
//后缀转中缀,用栈模拟
//遇到'&'和'|'用栈顶和次栈顶的运算,遇到'!'直接取反栈顶
#include<bits/stdc++.h>
using namespace std;
char str[1000010];
int n,num,top,idx;
int a[100010];
int stack1[100010];
int lin[100010];//临时用的,最后放栈里算 
int main()
{
    while(cin>>str&&str[0]!=EOF)
	{
		if(str[0]=='x')//如果是个变量
		{
			num=0;//转化为数字存栈里 
			for(int i=1;i<strlen(str);i++)
			{
				num*=10;
				num+=(str[i]-'0');
			}
			lin[++idx]=0;
		    a[num]=idx;//这个数在临时栈对应的位置 
		}
		if(str[0]=='&')
		{
			lin[++idx]=-1;
			continue;
		}
		if(str[0]=='|')
		{
			lin[++idx]=-2;
			continue;
		}
		if(str[0]=='!')
		{
			lin[++idx]=-3;
			continue;
		}
	}
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		lin[a[i]]=x;
	}
	for(int i=1;i<=idx;i++)
	{
		cout<<lin[i]<<" ";
	}
	return 0;
} 
2020/11/11 16:22
加载中...