gpt4 book ai didi

代码厨师 : reverse Polish Notation

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:20 25 4
gpt4 key购买 nike

这是反向波兰符号的代码。当我在 unix 上运行它时它工作正常但 codechef 说错了答案。请帮忙。

#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;
}
}

最佳答案

改变这一行

 for(;i<len;i++)

for(i=0;i<len;i++)

然后它会正常工作。在 codechef 中有很多测试用例,所以在你的程序中它可以很好地用于第一个测试用例,但之后它会失败,因为第二个测试用例中的“i”值将从它在第一个用例中结束的地方开始。因此,您必须在每个测试用例中初始化 i 的值。

关于代码厨师 : reverse Polish Notation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com