一道使用了数组,list,stack的题目超出内存解决方法
一道使用了数组,list,stack的题目超出内存
#include <iostream>
#include <list>
#include <stack>
using namespace std;
int main(){
int numoftrain, i, temp, num_test;
//列车进出的序列string
list<int>outtrain;
stack<int>imitate;
cin >> num_test;
while(num_test--){
int counter = 0;
string instr, outstr;
bool flag[20];//用于记录出入顺序
cin >> numoftrain;//输入列车数目
cin >> instr;
cin >> outstr;
for (i = 0;i < numoftrain; i++){
outtrain.push_back(outstr[i]);
}
for (i = 0;i < numoftrain; i++){
imitate.push(instr[i]);
flag[counter] = false;//push就是IN
counter++;
while((!outtrain.empty())&&(!imitate.empty())&&(outtrain.front() == imitate.top() )){
outtrain.pop_front();
imitate.pop();
flag[counter] = true;//每次pop就是OUT
counter++;
}
}
if (imitate.empty()){
cout << "Yes." << endl;
for(i = 0; i < counter; i++){
if(flag[i])
cout << "out" << endl;
else
cout << "in" << endl;
}
cout << "FINISH" << endl;
}
else
cout << "No." << endl << "FINISH" << endl;
while((!outtrain.empty())||(!imitate.empty())){
outtrain.pop_front();
imitate.pop();
}
}
//system("pause");
return 0;
}
怎么会超出内存,每次都清空了,求解!
------解决方案--------------------
第一,介绍下你代码的意图;
第二,排版;
第三,是否有尝试跟踪代码或者想办法narrow scope;
话说大家都看了一天“糟糕”的代码了(工作),实在没有兴趣。
#include <iostream>
#include <list>
#include <stack>
using namespace std;
int main(){
int numoftrain, i, temp, num_test;
//列车进出的序列string
list<int>outtrain;
stack<int>imitate;
cin >> num_test;
while(num_test--){
int counter = 0;
string instr, outstr;
bool flag[20];//用于记录出入顺序
cin >> numoftrain;//输入列车数目
cin >> instr;
cin >> outstr;
for (i = 0;i < numoftrain; i++){
outtrain.push_back(outstr[i]);
}
for (i = 0;i < numoftrain; i++){
imitate.push(instr[i]);
flag[counter] = false;//push就是IN
counter++;
while((!outtrain.empty())&&(!imitate.empty())&&(outtrain.front() == imitate.top() )){
outtrain.pop_front();
imitate.pop();
flag[counter] = true;//每次pop就是OUT
counter++;
}
}
if (imitate.empty()){
cout << "Yes." << endl;
for(i = 0; i < counter; i++){
if(flag[i])
cout << "out" << endl;
else
cout << "in" << endl;
}
cout << "FINISH" << endl;
}
else
cout << "No." << endl << "FINISH" << endl;
while((!outtrain.empty())||(!imitate.empty())){
outtrain.pop_front();
imitate.pop();
}
}
//system("pause");
return 0;
}
怎么会超出内存,每次都清空了,求解!
------解决方案--------------------
第一,介绍下你代码的意图;
第二,排版;
第三,是否有尝试跟踪代码或者想办法narrow scope;
话说大家都看了一天“糟糕”的代码了(工作),实在没有兴趣。