北京理工大学2014年机试练习0102题 打开文件夹顺序
本来想了半天没思路,后来发现自己理解偏差,哎,虐心啊,回到正轨,发现这道题思路比较简单,就是判断新输入的文件夹的序号是否和最近输入的3个文件夹的序号相同,如果相同,则忽略,不相同则插入双端队列,(用栈也行,,)然后依次输出最近三次的文件夹序号即可,下面是代码:
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> d;
cout<<"input:";
int n;
while(cin>>n)
{
if(d.size()==0)//里面没有元素,直接插入
{
d.push_front(n);
cout<<"output:"<<d[0]<<endl;
}
else if(d.size()==1)//里面已经有了一个元素
{
if(d[0]!=n)//若要插入元素和已有元素不等,则插入
{
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<endl;
}
else
{//若要插入元素和已有元素相等,则不插入
cout<<"output:"<<d[0]<<endl;
}
}
else if(d.size()==2)
{
if(d[0]!=n&&d[1]!=n)//要插入的元素和已有的个元素均不等
{
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
else
{
cout<<"output:"<<d[0]<<" "<<d[1]<<endl;
}
}
else if(d.size()>=3)
{
if(d[0]!=n&&d[1]!=n&&d[2]!=n)
{//插入元素和前三个元素均不相同
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
else
{
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
}
cout<<"input:";
}
return 0;
}
代码思路还算清晰,紧接着是第二道题:
实则是第一题的第二问:
基本没啥区别,不过事实证明我又想复杂了,在d.size()>=3的情况下,只需再判断三种情况,即新输入的文件序号和最近三次的哪个相同,交换,输出即可,,,
(哎,愁人啊)
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> d;
cout<<"input:";
int n;
while(cin>>n)
{
if(d.size()==0)//里面没有元素,直接插入
{
d.push_front(n);
cout<<"output:"<<d[0]<<endl;
}
else if(d.size()==1)//里面已经有了一个元素
{
if(d[0]!=n)//若要插入元素和已有元素不等,则插入
{
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<endl;
}
else
{//若要插入元素和已有元素相等,则不插入
cout<<"output:"<<d[0]<<endl;
}
}
else if(d.size()==2)
{
if(d[0]!=n&&d[1]!=n)//要插入的元素和已有的个元素均不等
{
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
else
{
cout<<"output:"<<d[0]<<" "<<d[1]<<endl;
}
}
else if(d.size()>=3)
{
if(d[0]!=n&&d[1]!=n&&d[2]!=n)
{//插入元素和前三个元素均不相同
d.push_front(n);
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
else//否则三个中肯定有一个和n相同
{
if(d[0]==n)
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
else if(d[1]==n)
{
int temp;
temp=d[1];
d[1]=d[0];
d[0]=temp;
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
else if(d[2]==n)
{
int temp;
temp=d[2];
d[2]=d[1];
d[1]=d[0];
d[0]=temp;
cout<<"output:"<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
}
}
}
cout<<"input:";
}
return 0;
}
另外,转载关于deque的用法的csdn博文 ,感谢博主
转载请标明出处,原文地址:http://blog.youkuaiyun.com/morewindows/article/details/6946811