这是反向波兰语Notation的代码。当我在unix上运行它时,它工作正常,但codechef说错了答案。请帮忙。Codechef:反向波兰语Notation
#include<stdio.h>
#include<string.h>
void push(char);
void pop();
char stack[400];
unsigned long top=0;
int main()
{
unsigned long len, test_case,i=0,j=0;
char expr[400];
scanf("%u\n",&test_case);
for(;j<test_case;j++)
{
scanf("%s\n",expr);
len=strlen(expr);
for(;i<len;i++)
{
if(expr[i]=='+'||expr[i]=='-'||expr[i]=='*'||expr[i]=='/'||expr[i]=='^')
push(expr[i]);
else if(expr[i]==')')
{
pop();
}
else if(expr[i]=='(')
continue;
else
printf("%c",expr[i]);
}
}
return 0;
}
void pop()
{
if(top==-1)
return;
else
{
printf("%c",stack[top]);
top=top-1;
}
}
void push(char x)
{
if(top==400)
return;
else
{
stack[++top]=x;
}
}
我不确定这是否是问题,但不应该在j的每次迭代期间将i变量重置为零? – 2013-04-24 15:27:03
1.你能想到*任何* RPN输入将*不*与此工作? 2.从#1中考虑**所有**的可能性。 3.你有没有通过这个多个* RPN样本? 3.在发布有关CodeChef或其他此类编程任务网站的问题时,*链接特定网站问题。* – WhozCraig 2013-04-24 15:28:13
'char expr [400];'我认为400是输入的最大长度。你需要0终结者的空间。 – 2013-04-24 15:35:11