這是反向波蘭語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