JD_タイトル1512——2つのスタックでキューを実現する
1771 ワード
タイトル1512:2つのスタックでキューを実現
時間制限:1秒
メモリ制限:128メガ
特殊問題:いいえ
コミット:2907
解決:983
タイトルの説明:
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです.
入力:
各入力ファイルには、テストサンプルが含まれています.各テストサンプルについて、最初の行には、キュー操作の個数を表すn(1<=n<=10000000)が入力される.次のn行、各行にキュー操作を入力:1.PUSH Xはキュー内のpushの整数x(x>=0)2.POPがキューからpopする数.
出力:
各テストケースに対応して、すべてのpop操作のキューpopからの数値を印刷します.pop操作を実行するときにキューが空の場合は、-1を印刷します.
サンプル入力:
サンプル出力:
この問題は、私自身のパソコンでは可能ですが、九度ではACがなくアルゴリズムの考えしか言わないでしょう.テーマは2つのスタックでキュー、temp 1、temp 2の2つのスタックを実現することを要求しています.その中でpushの時
元素をtemp 1に圧縮し、popのとき.まずtemp 1の要素を上から下に、順番にポップアップし、temp 2の中に全部押し込んだ後、temp 2の上に1つポップアップします.他のやり方をさっきのやり方でtemp 1に戻します.
時間制限:1秒
メモリ制限:128メガ
特殊問題:いいえ
コミット:2907
解決:983
タイトルの説明:
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです.
入力:
各入力ファイルには、テストサンプルが含まれています.各テストサンプルについて、最初の行には、キュー操作の個数を表すn(1<=n<=10000000)が入力される.次のn行、各行にキュー操作を入力:1.PUSH Xはキュー内のpushの整数x(x>=0)2.POPがキューからpopする数.
出力:
各テストケースに対応して、すべてのpop操作のキューpopからの数値を印刷します.pop操作を実行するときにキューが空の場合は、-1を印刷します.
サンプル入力:
3
PUSH 10
POP
POP
サンプル出力:
この問題は、私自身のパソコンでは可能ですが、九度ではACがなくアルゴリズムの考えしか言わないでしょう.テーマは2つのスタックでキュー、temp 1、temp 2の2つのスタックを実現することを要求しています.その中でpushの時
元素をtemp 1に圧縮し、popのとき.まずtemp 1の要素を上から下に、順番にポップアップし、temp 2の中に全部押し込んだ後、temp 2の上に1つポップアップします.他のやり方をさっきのやり方でtemp 1に戻します.
#include<iostream>
#include <string>
#include <stack>
using namespace std;
int IntToInt(int a)
{
if(a==0)
return 1;
int last=1;
for(int i=1;i<=a;i++)
last=last*10;
return last;
}
int StringToInt(string& str)
{
int len=str.size();
int a=0;
int j=0;
for(int i=len-1;i>=5;i--)
{
a=a+(str[i]-48)*IntToInt(j);
j++;
}
return a;
}
int main()
{
stack<int> temp1,temp2;
int n;
cin>>n;
int N=n;
while(N--)
{
string str;
int len=0;
cin.sync();
getline(cin,str);
len=str.size();
if(len<4)//pop
{
if(temp1.empty())
cout<<-1<<endl;
else
{
while(!temp1.empty())
{
temp2.push(temp1.top());
temp1.pop();
}
cout<<temp2.top()<<endl;
while(!temp2.empty())
{
temp1.push(temp2.top());
temp2.pop();
}
}
}
else
temp1.push(StringToInt(str));
}
}