白駿1874号(ByC++)
11850 ワード
質問する
白駿アルゴリズム1874号
コード#コード# #include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
int main() {
int n, t;
cin >> n;
queue<int> q;
for (int i = 0; i < n; i++) {
cin >> t;
q.push(t);
}
int j = 1;
stack<int> s;
vector<string> ans;
while (!q.empty()) {
if (s.empty()) {
ans.push_back("+");
s.push(j);
j++;
}
if (s.top() > q.front()) {
cout << "NO" << '\n';
return 0;
} else if (s.top() == q.front()) {
ans.push_back("-");
s.pop();
q.pop();
if (!q.empty() && s.empty()) {
ans.push_back("+");
s.push(j);
j++;
}
} else {
for (; j <= q.front(); j++) {
ans.push_back("+");
s.push(j);
}
if (s.top() == q.front()) {
ans.push_back("-");
s.pop();
q.pop();
}
}
}
for (auto i = ans.begin(); i < ans.end(); i++) {
cout << *i << '\n';
}
return 0;
}
私のような人は、問題を理解するのに時間がかかりすぎたので、問題の説明を残したいと思っています.パソコンが1から順番に増えると、数字を入れることができる場所があります.私はその場所を上から積み上げた.次に,ユーザが入力した数字をqueueとし,上から順番にスタックに数字を入れ,queueの先端にあればpopとする.
私はもともと話ができないので、今度これを見たときに理解できるかどうか分かりません.説明とコードを一緒に見れば、どうしても理解できるでしょう…?
Reference
この問題について(白駿1874号(ByC++)), 我々は、より多くの情報をここで見つけました
https://velog.io/@lah1203/백준-1874번by-C
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
int main() {
int n, t;
cin >> n;
queue<int> q;
for (int i = 0; i < n; i++) {
cin >> t;
q.push(t);
}
int j = 1;
stack<int> s;
vector<string> ans;
while (!q.empty()) {
if (s.empty()) {
ans.push_back("+");
s.push(j);
j++;
}
if (s.top() > q.front()) {
cout << "NO" << '\n';
return 0;
} else if (s.top() == q.front()) {
ans.push_back("-");
s.pop();
q.pop();
if (!q.empty() && s.empty()) {
ans.push_back("+");
s.push(j);
j++;
}
} else {
for (; j <= q.front(); j++) {
ans.push_back("+");
s.push(j);
}
if (s.top() == q.front()) {
ans.push_back("-");
s.pop();
q.pop();
}
}
}
for (auto i = ans.begin(); i < ans.end(); i++) {
cout << *i << '\n';
}
return 0;
}
私のような人は、問題を理解するのに時間がかかりすぎたので、問題の説明を残したいと思っています.パソコンが1から順番に増えると、数字を入れることができる場所があります.私はその場所を上から積み上げた.次に,ユーザが入力した数字をqueueとし,上から順番にスタックに数字を入れ,queueの先端にあればpopとする.私はもともと話ができないので、今度これを見たときに理解できるかどうか分かりません.説明とコードを一緒に見れば、どうしても理解できるでしょう…?
Reference
この問題について(白駿1874号(ByC++)), 我々は、より多くの情報をここで見つけました https://velog.io/@lah1203/백준-1874번by-Cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol