一、填空题40题,时间80分钟
和360实习的题目有一些是重复的。可以参考牛客网:http://www.nowcoder.com/。
二、两道编程题,时间70分钟,题目不是特别难,如下所示
第一道:
思路:
统计每个字符出现的次数。然后遍历一次,找到第一个出现次数为1的字符。在我的vs上调试可以通过,但是到360里面的编辑器就不行了,说是超时。从题目的hint里可以看出可能是从终端接收数据出问题。本想一个一个字符接收的,最后时间不够了。还没解决。下面贴出没有通过的代码。
代码:
#include<iostream> #include<string> //#include<vector> using namespace std; int main() { int num; cin>>num; string str; while(num > 0) { num--; getline(cin , str); int len = str.size(); int strmap[256] = {0}; int pos = -1; for(int i = 0 ; i < len ; i++) { strmap[str[i]]++;//统计每个字符出现的次数 } for(int j = 0 ; j < len ; j++) { if(strmap[str[j]] == 1) { pos = j;//找到第一个只出现一次的字符 break; } } if(pos != -1) cout<<str[pos]<<endl; } return 0; }
样例输入
3 2 0 3 2 1 2 3 2 4 5 1 1 2 1 3 1 4 1 3 3
0 1 2 1 1
构造一个邻接矩阵表示每个人之间的认识与否。比如graph[0][2] = 1 表示0认识2。然后遍历矩阵,镇长满足条件:1、所在行全为0(除了自己) 2、所在列全为1
注:下面的代码没有提交测试。
#include<iostream> #include<string> #include<vector> using namespace std; int main() { int groups; cin>>groups; while(groups > 0) { groups--; int n , m; cin >> n >> m; vector<vector<bool> > graph(n , vector<bool>(n , false)); vector<int> result; int tmp1 , tmp2; for(int i = 0 ; i < m ; i++) { cin >> tmp1 >> tmp2; graph[tmp1-1][tmp2-1] = true; } for(int i = 0 ; i < n ; i++) { bool flag = true; for(int j = 0 ; j < n ; j++) { if(i != j && graph[i][j] == true || i != j && graph[j][i] == false) { flag = false; break; } } if(flag) { result.push_back(i); } } if(result.empty()) cout<<0<<endl<<endl; else { cout<<result.size()<<endl; for(int i = 0 ; i < result.size() ; i++) cout<<result[i]+1<<" "; cout<<endl; } } return 0; }
版权声明:转载请注明出处。
原文:http://blog.csdn.net/u012243115/article/details/47427957