0
我是新來的問題解決。我正在解決名爲Expression的UVA問題。我想我已經解決了這個問題,因爲我的代碼爲每個可能的測試案例提供了正確的輸出。但是我仍然得到WA。我似乎在某處打印了一個我沒有做好的換行符。問題是:「輸出文件將每個後綴表達式都放在一行上,在不同的表達式之間打印一個空行。」有人可以向我解釋清楚一點。我在小組中提出了這個問題,但我沒有得到答案。而以前的討論也沒有幫助。提前致謝。我很難打印換行
#include<iostream>
#include<map>
#include<stack>
#include<vector>
#include<cstdio>
using namespace std;
void push_into_stack(char c, vector<char> &ans, stack<char> &st);
void work_with_stack(vector<char> &ans, stack<char> &st);
int main(void)
{
freopen("input.txt", "r", stdin);
int t;
char dummy;
cin >> t;
for(int i=1; i<=t; i++)
{
vector<char> exp, ans;
stack<char> st;
char c;
while(cin >> c)
exp.push_back(c);
for(int i=0; i<exp.size(); i++)
if(exp[i]=='+' || exp[i]=='-' || exp[i]=='*' || exp[i]=='/') push_into_stack(exp[i], ans, st);
else if(exp[i]=='(') st.push(exp[i]);
else if(exp[i]==')') work_with_stack(ans, st);
else ans.push_back(exp[i]);
while(!st.empty())
{
ans.push_back(st.top());
st.pop();
}
for(int i=0; i<ans.size(); i++)
cout << ans[i];
cout << endl;
}
return 0;
}
void push_into_stack(char c, vector<char> &ans, stack<char> &st)
{
map< char, int > mp;
mp['/']=2;
mp['*']=2;
mp['+']=1;
mp['-']=1;
while(true)
{
if(!st.empty() && mp[c]<=mp[st.top()])
{
ans.push_back(st.top());
st.pop();
}
else
{
st.push(c);
break;
}
}
return;
}
void work_with_stack(vector<char> &ans, stack<char> &st)
{
while(true)
{
if(st.top()=='(') break;
ans.push_back(st.top());
st.pop();
}
st.pop();
return;
}
請顯示您想出的代碼 – Mike
更多的上下文/代碼會有所幫助,但是,您似乎只需要在打印之間添加空行。嘗試用'\ n「或者'std :: endl' –
實際嘗試'」\ n \ n「' - 如果你想在打印之間留空行。 –