网易C++内推笔试编程题代码
第一道,01交错串,代码如下:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
using size_type = string::size_type;
int main()
{
string str;
while(cin>>str){
size_type start = 0;
size_type end = 0;
size_type maxlen = 1;
for(size_type i=1;i<str.size();++i){
if(str[i] == str[end]){
maxlen = max(end-start+1,maxlen);
start = i;
end = start;
}else{
++end;
}
}
maxlen = max(end-start+1,maxlen);
cout<<maxlen<<endl;
}
return 0;
}
第二道,数列反转,代码如下:
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<long> deq;
deque<long>::size_type len;
while(cin>>len){
deq.resize(0);
if(len%2==0){
for(deque<long>::size_type i=0;i<len;++i){
int tmp;
cin>>tmp;
if(i%2==0){
deq.push_back(tmp);
}else{
deq.push_front(tmp);
}
}
}else{
for(deque<long>::size_type i=0;i<len;++i){
int tmp;
cin>>tmp;
if(i%2==0){
deq.push_front(tmp);
}else{
deq.push_back(tmp);
}
}
}
for(deque<long>::size_type i=0;i<deq.size();++i){
cout<<deq[i];
if(i!=deq.size()-1)
cout<<' ';
}
cout<<endl;
}
return 0;
}
第三道,疯狂队列,代码如下:
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
vector<long> vec;
vector<long>::size_type len;
while(cin>>len){
deque<int> deq;
vec.resize(len);
long crazy = 0;
for(vector<long>::size_type i=0;i<len;++i){
cin>>vec[i];
}
sort(vec.begin(),vec.end());
deq.push_back(vec.back());
for(vector<long>::size_type i=0;i<len-1;++i){
long front,back;
front = abs(vec[i]-deq.front());
back = abs(vec[i]-deq.back());
if(front >= back){
deq.push_front(vec[i]);
crazy += front;
}else{
deq.push_back(vec[i]);
crazy += back;
}
}
cout<<crazy<<endl;
}
return 0;
}
不知道大家有没有更好的方法
#网易##C++工程师#

