网易互娱第三批 笔试记录

/*-----------------------------
第一题
------------------------------*/
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>

using namespace std;
vector<vector<int>> record;
void count(int num, int index) {
string s = to_string(num);
for (int i = 0; i < s.size(); i++) {
if (s[i] == '0')
continue;
else
record[index][s[i] - '0'] ++;
}
}

int main() {
int m;
cin >> m;
record = vector<vector<int>>(m, vector<int>(10, 0));
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
//cout << a << ',' << b << endl;
int sum = 0;
int seq = 0;
count(a, i);
count(b, i);
while (b != 0) {
int temp = a * (b % 10);
//cout << temp <<endl;
count(temp, i);
temp = temp * pow(10, seq);
seq++;
sum += temp;
b /= 10;
}
count(sum, i);
}

vector<int> res(10, 0);
for (int i = 0; i < m; i++) {
for (int j = 1; j <= 9; j++) {
res[j] += record[i][j];
if (j == 9)
cout << record[i][j] << endl;
else
cout << record[i][j] << ' ';
}
}

int maxIndex = 1;
for (int i = 2; i <= 9; i++) {
if (res[i] > res[maxIndex])
maxIndex = i;
}
cout << maxIndex << endl;
return 0;
}

/*-----------------------------
第二题
------------------------------*/
#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
#include <algorithm>
#include <climits>

using namespace std;
char ass[6] = { 'A', 'S', 'D', 'F', 'G', 'H' };
vector<string> dic;//用于存放所有的组合
vector<bool> visited(6, false);
void permutation(string s) {
if (s.size() == 6) {
dic.push_back(s);
return;
}
for (int i = 0; i < 6; i++) {
if (visited[i] == false) {
visited[i] = true;
s += ass[i];
permutation(s);
s = s.substr(0, s.size() - 1);
visited[i] = false;
}
}
return;
}

int cal(string s1, string s2) {//计算S2排列下的S1花费
unordered_map<char, int> grip;
for (int i = 0; i < s2.size(); i++) {
grip.insert(make_pair(s2[i], i));
}
int cost = 0;
int index = 0;
for (int i = 0; i < s1.size(); i++) {
int cur = grip[s1[i]];
if (cur > index)
cost += cur - index;
else
cost += index - cur;
index = grip[s1[i]];
}
return cost;
}

int main() {
int m;
cin >> m;
getchar();
permutation("");
for (int i = 0; i < m; i++) {
string s;
getline(cin, s);
int res = INT_MAX;
for (int j = 0; j < dic.size(); j++) {
res = min(res, cal(s, dic[j]));
}
cout << res << endl;
}
return 0;
}


/*-----------------------------
第三题
------------------------------*/
没有理清思路

#笔试题目##网易互娱#
全部评论
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<string> #include<vector> #include<queue> using namespace std; typedef long long LL; struct node{ int c; int tn; int tm; int num; node(int a,int b,int dd,int d) { c = a; tn = b; tm = dd; num = d; } node() { } }; struct node2{ int tn; int tm; int c; node2(int a,int b,int d) { tn = a; tm = b; c = d; } node2() { } }; bool cmp(node a,node b) { if(a.num!=b.num) { return a.num>b.num; } else if(a.c!=b.c) { return a.c<b.c; } else if(a.tn!=b.tn) { return a.tn<b.tn; } else { return a.tm<b.tm; } } int t,n,m,dx[]={0,1,-1,0},dy[]={1,0,0,-1}; string s[100]; int main() { cin>>t; while(t--) { cin>>n>>m; for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) s[i][j]='#'; for(int i=0;i<n;i++) cin>>s[i]; while(1) { vector<node>arr; arr.clear(); int book[100][100] = {0}; for(int i=0;i<=50;i++) for(int j=0;j<=50;j++) book[i][j]=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(!book[i][j]&&s[i][j]!='#') { int tc = 1; char c = s[i][j]; book[i][j] = 1; queue<node2>q; q.push(node2(i,j,s[i][j])); while(!q.empty()) { int sz = q.size(); for(int i=1;i<=sz;i++) { node2 temp = q.front(); q.pop(); int x = temp.tn; int y = temp.tm; for(int k = 0;k<4;k++) { int tempx = x+dx[k]; int tempy = y+dy[k]; if(tempx>=0&&tempx<n&&tempy>=0&&tempy<m&&!book[tempx][tempy]&&s[tempx][tempy]==c) { book[tempx][tempy] = 1; tc++; q.push(node2(tempx,tempy,c)); } } } } if(tc>1) { arr.push_back(node(s[i][j],i,j,tc)); } } } if(arr.size()==0) break; else { int ss; sort(arr.begin(),arr.end(),cmp); int xx = arr[0].tn; int yy = arr[0].tm; int cc = arr[0].c; queue<node2>q; q.push(node2(xx,yy,cc)); while(!q.empty()) { int sz = q.size(); for(int i=1;i<=sz;i++) { node2 temp = q.front(); q.pop(); int x = temp.tn; int y = temp.tm; int c = temp.c; for(int k = 0;k<4;k++) { int tempx = x+dx[k]; int tempy = y+dy[k]; if(tempx>=0&&tempx<n&&tempy>=0&&tempy<m&&s[tempx][tempy]==cc) { s[tempx][tempy]='#'; q.push(node2(tempx,tempy,c)); } } } } for(int i=0;i<m;i++) { int k = 0; for(int j=n-1;j>=0;j--) { if(s[j][i]=='#') { k++; } else s[j+k][i]=s[j][i]; if(k!=0) s[j][i]='#'; } } for(int i=0;i<m;i++) { int k=0; for(int j=0;j<n;j++) if(s[j][i]=='#') k++; if(k==n) { for(int j=0;j<n;j++) s[j][i]=s[j][i+1],s[j][i+1]='#'; } } } } int shu = 0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(s[i][j]=='#') shu++; } cout<<n*m-shu<<endl; } return 0; } 第三题
点赞 回复 分享
发布于 2019-09-27 21:46

相关推荐

程序员牛肉:小牛肉来也! 基本破不了局了,我给你的建议是适当放弃秋招,投递大厂的日常实习之后赶明年的春招。 在没有实习的情况下,你的项目经历给面试官的作用就是提供提问点方便面试官来提问八股以及场景题而已。因此你现在简历的写法不太对,要着重突出项目中使用的技术点,而不是像你现在这个写的很宽泛。 最好是“基于xxxx技术解决了xxxx问题,解决了xxxx边缘场景问题”。最好是这样写,方便面试官对你的简历进行提问。 最后的最后,问题其实不在你。今年的秋招确实比较寒冬一点,所以找不到是正常的。要做好打持久战的准备。
Java学习交流
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务