華為2019軟體類筆試
阿新 • • 發佈:2019-01-01
第一題
忘記題目了...覆盤不了
#include<iostream>
#include<string>
#include <vector>
#include <map>
using namespace std;
int main()
{
cout<<"Hello Alipay!"<<endl;
return 0;
}
第二題:0-1揹包問題
#include<iostream> #include <vector> #include <string> using namespace std; void split(std::string str,std::string pattern,vector<int>& result) { std::string::size_type pos; str+=pattern; int size=str.size(); for(int i=0; i<size; i++){ pos=str.find(pattern,i); if(pos<size){ std::string s=str.substr(i,pos-i); int tt=std::stoi(s); result.push_back(tt); i=pos+pattern.size()-1; } } } int solve(int N,int V,vector<int>& value,vector<int>& weight) { vector<vector<int>> f(N+1,vector<int>(V+1,0)); int result=0; for(auto i = 1; i <= N; i++) { for(auto j = 1; j <= V; j++) { if(j < weight[i]) { f[i][j] = f[i - 1][j]; } else { int x = f[i - 1][j]; int y = f[i - 1][j - weight[i]] + value[i]; f[i][j] = x < y ? y : x; } if(f[i][j]>result) result=f[i][j]; } } return result; } int main() { string vstr,wstr; int c; while(cin>>vstr>>wstr) { vector<int> v(1, 0); vector<int> w(1, 0); split(vstr,",",v); split(wstr,",",w); cin >> c; cout << solve(5, c, v, w) << " "; } }
第三題:typedef語句解析
#include<iostream> #include<string> #include <vector> #include <map> using namespace std; string trim(const string& str) { string::size_type pos = str.find_first_not_of(' '); if (pos == string::npos) { return str; } string::size_type pos2 = str.find_last_not_of(' '); if (pos2 != string::npos) { return str.substr(pos, pos2 - pos + 1); } return str.substr(pos); } std::vector<std::string> split(std::string str,std::string pattern) { std::string::size_type pos; std::vector<std::string> result; str+=pattern; int size=str.size(); for(int i=0; i<size; i++) { pos=str.find(pattern,i); if(pos<size) { std::string s=trim(str.substr(i,pos-i)); result.push_back(s); i=pos+pattern.size()-1; } } return result; } int main() { string word,key; char ch; vector<string> text; map<string, string> mm; while (cin >> word) { text.push_back(word); if ((ch = getchar()) == '\n') break; } cin>>key; for(int i=0;i<text.size();i+=3) { if(text[i]=="typedef") { int len=text[i+2].size(); if(text[i+2][len-1]=';'){ text[i+2]=text[i+2].substr(0,len-1); mm[text[i+2]] = text[i+1]; for(auto j=mm.begin();j!=mm.end();++j){ auto p=mm[text[i+2]].find(j->first); if(p!=string::npos) mm[text[i+2]].replace(p,1,j->second); } } else{ cout<<"none "; return 0; } int test=0; } else { cout << "none "; return 0; } } cout<<mm[key]<<" "; return 0; }