BOJ:1874スタックカウント(C++)
質問する
Code #include <iostream>
#include <stack>
#include <vector>
using namespace std;
stack<int> S,tmp;
vector<char> V;
bool findStack(int x)
{
for(int i=0;i<tmp.size();i++)
{
int t = tmp.top();
tmp.pop();
if(t == x){
return true;
}
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int N,input,max,flag=0;
cin >> N;
max = 0;
for(int i=0;i<N;i++)
{
cin >> input;
if(input >= max)
{
for(int j=max+1;j<=input;j++)
{
S.push(j);
V.push_back('+');
}
max = input;
S.pop();
V.push_back('-');
}else if(input < max)
{
tmp = S;
if(findStack(input))
{
for(int j=0;j<S.size();j++)
{
int t = S.top();
S.pop();
V.push_back('-');
if(t == input)
break;
}
}else{
flag = 1;
}
}
}
if(flag)
cout << "NO";
else
{
for(auto a : V)
cout << a << '\n';
}
}
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
stack<int> S,tmp;
vector<char> V;
bool findStack(int x)
{
for(int i=0;i<tmp.size();i++)
{
int t = tmp.top();
tmp.pop();
if(t == x){
return true;
}
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int N,input,max,flag=0;
cin >> N;
max = 0;
for(int i=0;i<N;i++)
{
cin >> input;
if(input >= max)
{
for(int j=max+1;j<=input;j++)
{
S.push(j);
V.push_back('+');
}
max = input;
S.pop();
V.push_back('-');
}else if(input < max)
{
tmp = S;
if(findStack(input))
{
for(int j=0;j<S.size();j++)
{
int t = S.top();
S.pop();
V.push_back('-');
if(t == input)
break;
}
}else{
flag = 1;
}
}
}
if(flag)
cout << "NO";
else
{
for(auto a : V)
cout << a << '\n';
}
}
(参照:https://m.blog.naver.com/PostView.nhn?blogId=occidere&logNo=220812563361&proxyReferer=https:%2F%2Fwww.google.com%2F)
Reference
この問題について(BOJ:1874スタックカウント(C++)), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/BOJ-1874-스택-수열-Cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol