- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我对评估后缀评估的尝试
#include<iostream>
#include<string>
using namespace std;
template<class T>
class Stack
{
private:
T *s;int N;
public:
Stack(int maxn)
{
s=new T[maxn];
N=0;
}
int empty()const
{
return N==0;
}
void push(T k)
{
s[N++]=k;
}
T pop()
{
return s[--N];
}
};
int main()
{
//postfix evaluation
char *a="3+4*5";
int N=strlen(a);
Stack<int>save(N);
for(int i=0;i<N;i++)
{
if(a[i]=='+')
save.push(save.pop()+save.pop());
if(a[i]=='*')
save.push(save.pop()*save.pop());
if((a[i]>='0' && a[i]<='9'))
save.push(0);
while((a[i]>='0' && a[i]<='9'))
save.push(10*save.pop()+(a[i++]-'0'));
}
cout<<save.pop()<<" "<<endl;
return 0;
}
但是因为 4*5+3=23 而不是答案 23,它给了我答案 5,据我所知,这段代码给了我这个结果,因为,首先它检查是否有 i=0 的 + 标记,这是不是,然后检查是否是*,这也不是,所以它先压0,然后计算10*0+'3'-'0',等于3,(它会被压入堆栈), 因为 i=1,a[i] 等于 3, 所以打印 3+, 第二个 pop 是未定义的, 所以我认为这是错误的, 请帮我修复它
最佳答案
这需要一点点修复:
#include <iostream>
#include <cstring>
using namespace std;
template<class T>
class Stack
{
private:
T *s;
int N;
public:
Stack(int maxn)
{
s = new T[maxn];
N = 0;
}
int empty()const
{
return N == 0;
}
void push(T k)
{
s[N++] = k;
}
T pop()
{
return s[--N];
}
};
int main()
{
//postfix evaluation
const char *a = "3 4 5*+";
int N = strlen(a);
Stack<int>save(N);
for (int i = 0; i < N; i++)
{
if (a[i]=='+')
save.push(save.pop() + save.pop());
if (a[i]=='*')
save.push(save.pop() * save.pop());
if (a[i] >= '0' && a[i] <= '9')
{
save.push(0);
while (a[i] >= '0' && a[i] <= '9')
save.push(10 * save.pop() + a[i++] - '0');
i--;
}
}
cout << save.pop() << " " << endl;
return 0;
}
输出(ideone):
23
现在,如果您删除 i--;
我添加的代码将跳过 a[]
中的字符因为 i
的 2 个增量, 在 a[i++]
和 for (int i = 0; i < N; i++)
.
没有i--;
输出是(ideone):
9
关于c++ - 后缀评价算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347335/
Confusion rose because of this post. The author updated his post, and the result became clear. Concl
假设我有以下语句: bool foo=true; if (foo){ foo=false; } else{ //do
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我有一个表单,其中有很多设置页面。所有的页面都是一样的,所以我宁愿只制作一个表格,然后传入它应该编辑的设置的名称。我该怎么做?假设该表单称为“ConfigForm”,我希望能够用这样的方式调用它: n
简单问题: 我通过 javascript 使用 Youtube gdata 来:评论、回复和喜欢/不喜欢视频。到目前为止一切正常! 但是,我正在尝试允许用户特别喜欢和不喜欢评论(就像在本地 youtu
我在设置 TableView 中有一个单元格,我想将用户直接发送到 Appstore 并打开应用程序页面,以便他们可以发表评论。在 Stackoverflow 中有很多关于此的内容,但在 iOS8 和
快速提问 - 如标题所述。那可能吗?我认为以下端点是我最好的选择:https://developers.google.com/youtube/v3/docs/comments/update ,但找不到
我是一名优秀的程序员,十分优秀!