网易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++工程师#