网易互娱2018校招游戏开发工程师笔试题第四题
#include<string>
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct name_address {
string name;
string address;
name_address(string n1, string a1) {
name = n1;
address = a1;
}
bool check(const string&ss) {
int xx = name.find('x');
if (xx != string::npos) {
string s1(name.begin(), name.begin() + xx);
string s2(ss.begin(), ss.begin() + xx);
if (s1 == s2)
return true;
else
return false;
}
return name == ss;
}
friend ostream& operator<<(ostream&out, name_address&ss) {
return out << "name:"<<ss.name << " address:" << ss.address;
}
};
class vstring {
vector<vector<string>>storage;
public:
vstring(int num) { //设置向量数目
storage.resize(num);
}
vector<string>& operator[](int x) { //方括号访问
return storage[x];
}
int hang() {
return storage.size();
}
int lie(int i) {
return storage[i].size();
}
friend ostream& operator<<(ostream&out, vstring&ss) {
for (unsigned i = 0;i < ss.hang();i++) {
for (unsigned j = 0;j < ss.lie(i);j++) {
out << ss.storage[i][j] << " ";
}
out << endl;
}
return out;
}
};
class name_address_vector {
vector<vector<name_address>>storage;
public:
name_address_vector(int num) { //设置向量数目
storage.resize(num);
}
vector<name_address>& operator[](int x) { //方括号访问
return storage[x];
}
int hang() {
return storage.size();
}
int lie(int i) {
return storage[i].size();
}
friend ostream& operator<<(ostream&out, name_address_vector&ss) {
for (unsigned i = 0;i < ss.hang();i++) {
for (unsigned j = 0;j < ss.lie(i);j++) {
out << ss.storage[i][j] << " ";
}
out << endl;
}
return out;
}
};
int main(void) {
//fstream in("E:\\aa.txt");
// if (in.is_open()) {
// cout << "文件打开成功\n";
//}
// else
// cout << "文件打开失败\n";
int vector_num = 0;
cin >> vector_num;
vstring out(vector_num);
name_address_vector storage(vector_num);
for (int i = 0;i < vector_num;i++) {
int nav_num;
cin >> nav_num; //模板数目
for (int j = 0;j < nav_num;j++) {
string name, address;
cin >> name>>address;
storage[i].push_back(name_address(name,address));
}
int vstring_num;
cin >> vstring_num; //匹配的号码数目
for (int k = 0;k < vstring_num;k++) {
string telephone;
cin >> telephone;
out[i].push_back(telephone);
}
}
//输入test
/*
cout << endl;
cout << endl;
cout << storage;
cout << endl;
cout << endl;
cout << out;
cout << endl << endl;
cout << "输出匹配为:";
*/
//数据处理
vector<string>output;
for (int i = 0;i < out.hang();i++) {
//out[i]是向量,要将其每个数据匹配storage[i]中的向量,不匹配则存储"unknown",否则存储相应地址
for (int j = 0;j < out.lie(i);j++) { //对于每一个out[i][j]这个数,进行匹配号码
bool it = false;
for (int k = 0;k < storage.lie(i);k++) {
if (storage[i][k].check(out[i][j])) {
output.push_back(storage[i][k].address);
it = true;
break;
}
}
if (!it) {
output.push_back("unknown");
}
if(it)
it = false;
}
}
cout << endl;
for (int i = 0;i < output.size();i++) {
cout << output[i] << endl;
}
return 0;
}
#网易##校招##笔试题目#
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct name_address {
string name;
string address;
name_address(string n1, string a1) {
name = n1;
address = a1;
}
bool check(const string&ss) {
int xx = name.find('x');
if (xx != string::npos) {
string s1(name.begin(), name.begin() + xx);
string s2(ss.begin(), ss.begin() + xx);
if (s1 == s2)
return true;
else
return false;
}
return name == ss;
}
friend ostream& operator<<(ostream&out, name_address&ss) {
return out << "name:"<<ss.name << " address:" << ss.address;
}
};
class vstring {
vector<vector<string>>storage;
public:
vstring(int num) { //设置向量数目
storage.resize(num);
}
vector<string>& operator[](int x) { //方括号访问
return storage[x];
}
int hang() {
return storage.size();
}
int lie(int i) {
return storage[i].size();
}
friend ostream& operator<<(ostream&out, vstring&ss) {
for (unsigned i = 0;i < ss.hang();i++) {
for (unsigned j = 0;j < ss.lie(i);j++) {
out << ss.storage[i][j] << " ";
}
out << endl;
}
return out;
}
};
class name_address_vector {
vector<vector<name_address>>storage;
public:
name_address_vector(int num) { //设置向量数目
storage.resize(num);
}
vector<name_address>& operator[](int x) { //方括号访问
return storage[x];
}
int hang() {
return storage.size();
}
int lie(int i) {
return storage[i].size();
}
friend ostream& operator<<(ostream&out, name_address_vector&ss) {
for (unsigned i = 0;i < ss.hang();i++) {
for (unsigned j = 0;j < ss.lie(i);j++) {
out << ss.storage[i][j] << " ";
}
out << endl;
}
return out;
}
};
int main(void) {
//fstream in("E:\\aa.txt");
// if (in.is_open()) {
// cout << "文件打开成功\n";
//}
// else
// cout << "文件打开失败\n";
int vector_num = 0;
cin >> vector_num;
vstring out(vector_num);
name_address_vector storage(vector_num);
for (int i = 0;i < vector_num;i++) {
int nav_num;
cin >> nav_num; //模板数目
for (int j = 0;j < nav_num;j++) {
string name, address;
cin >> name>>address;
storage[i].push_back(name_address(name,address));
}
int vstring_num;
cin >> vstring_num; //匹配的号码数目
for (int k = 0;k < vstring_num;k++) {
string telephone;
cin >> telephone;
out[i].push_back(telephone);
}
}
//输入test
/*
cout << endl;
cout << endl;
cout << storage;
cout << endl;
cout << endl;
cout << out;
cout << endl << endl;
cout << "输出匹配为:";
*/
//数据处理
vector<string>output;
for (int i = 0;i < out.hang();i++) {
//out[i]是向量,要将其每个数据匹配storage[i]中的向量,不匹配则存储"unknown",否则存储相应地址
for (int j = 0;j < out.lie(i);j++) { //对于每一个out[i][j]这个数,进行匹配号码
bool it = false;
for (int k = 0;k < storage.lie(i);k++) {
if (storage[i][k].check(out[i][j])) {
output.push_back(storage[i][k].address);
it = true;
break;
}
}
if (!it) {
output.push_back("unknown");
}
if(it)
it = false;
}
}
cout << endl;
for (int i = 0;i < output.size();i++) {
cout << output[i] << endl;
}
return 0;
}
#网易##校招##笔试题目#