全部评论
// 贴个代码吧...
#ifdef LOCAL
#include <fstream>
#endif
//#ifdef LOCAL
#include <cstdio>
#include <cstring>
#include <map>
#include <queue>
#include <unordered_map>
#include <vector>
//#else
//#include <bits/stdc++.h>
//#endif
#define INF 0x7FFFFFFF
using namespace std;
typedef long long LL;
inline void read(LL&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
class Dependency {
public:
void AddDependency(unsigned int ModuleId, unsigned int DependModuleId) {
if (degree.find(ModuleId) == degree.end()) { degree[ModuleId] = 0; }
if (degree.find(DependModuleId) == degree.end()) { degree[DependModuleId] = 0; }
++degree[DependModuleId];
Graph[ModuleId].push_back(DependModuleId);
}
void CalcDependency() {
for (map<int, int>::iterator it = degree.begin(); it != degree.end(); ++it) {
if (it->second == 0) {
que.push(it->first);
degree[it->first] = -1;
}
}
while (!que.empty()) {
int x = que.front(); que.pop();
for (int i = 0; i < Graph[x].size(); ++i) {
--degree[Graph[x][i]];
if (degree[Graph[x][i]] == 0) {
que.push(Graph[x][i]);
degree[Graph[x][i]] = -1;
}
}
}
}
bool MouldelsCycularDependency(unsigned int ModuleId) {
if (degree[ModuleId] > 0) return false;
return true;
}
void clear(void) {
degree.clear();
Graph.clear();
}
queue<int> que;
map<int, int> degree;
unordered_map<int, vector<int>> Graph;
};
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif
Dependency dep;
int a, b;
while (scanf("{%x, %x}", &a, &b) != EOF) {
dep.AddDependency(a, b);
char ch = getchar();
if (ch != ',') break;
getchar();
}
dep.CalcDependency();
vector<pair<int, int>> ans;
for (map<int, int>::iterator iter = dep.degree.begin(); iter != dep.degree.end(); ++iter) {
//if (iter->second > 0) printf("(0x%.02x, true)\n", iter->first);
//else printf("(0x%.02x, false)\n", iter->first);
ans.push_back(make_pair(iter->first, iter->second));
}
for (int i = 0; i < ans.size(); ++i) {
if (ans[i].second != -1) printf("{0x%.02x, true}", ans[i].first);
else printf("{0x%.02x, false}", ans[i].first);
if (i != ans.size()-1) printf(",\n");
else printf("\n");
}
return 0;
}
华为机试100分就算过,剩下的看面试表现。只要总分算出来有100分就有面试机会,如果学校比较好的话。分值大约为该题分值乘以通过率,累加,所以往年就算只有第一题全ac,也是可以面试的
都sp了还在这里吐槽。。。唉。。。
100 80第三题太长不看
现在笔试的是优招的吗?
第二题
//用弗洛伊德算法思想
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
vector<int> label;
vector<int> dataIndex;
void AddDependency(unsigned int Moduled, unsigned int DeModuled)
{
for(int i = 0; i < label.size(); ++i)
{
if(Moduled == label[i])
{
dataIndex.push_back(Moduled);
break;
}
}
for(int j = 0; j < label.size(); ++j)
{
if(DeModuled == label[j])
{
dataIndex.push_back(DeModuled);
break;
}
}
}
int main()
{
vector<string> input;
vector<int> result;
string temp;
while(getline(cin, temp))
{
input.push_back(temp);
}
int len = input.size();
for(int i = 0; i < len; i++)
{
temp = input[i];
int k = 3;
int num = 0;
while(temp[k] != ',')
{
if(temp[k] >= '0' && temp[k] <= '9')
{
num = num * 16 + temp[k] - '0';
k++;
}
else
{
num = num * 16 + temp[k] - 'a';
k++;
}
}
result.push_back(num);
num = 0;
k = k + 4;
while(temp[k] != '}')
{
if(temp[k] >= '0' && temp[k] <= '9')
{
num = num * 16 + temp[k] - '0';
k++;
}
else
{
num = num * 16 + temp[k] - 'a';
k++;
}
}
result.push_back(num);
num = 0;
}
vector<int> result_temp(result);
sort(result_temp.begin(), result_temp.end());
label.push_back(result_temp[0]);
for(int i = 1; i < result_temp.size(); i++)
{
if(result_temp[i] != result_temp[i-1])
label.push_back(result_temp[i]);
}
for(int i = 0; i < result.size()-1; i += 2)
{
AddDependency(result[i], result[i+1]);
}
int **arr = new int*[label.size()];
for(int i = 0; i < label.size(); i++)
arr[i] = new int[label.size()];
//初始化数组为全0;
for(int i = 0; i < label.size(); i++)
for(int j = 0; j < label.size(); j++)
arr[i][j] = 0;
for(int i = 0; i < result.size()-1; i += 2)
{
arr[dataIndex[i]-1][dataIndex[i+1]-1] = 1;
}
for(int i = 0; i < label.size(); i++)
{
for(int j = 0; j < label.size(); j++)
{
for(int k = 0; k < label.size(); k++)
{
if(arr[j][i] == 1 && arr[i][k] == 1)
{
arr[j][k] = 1;
}
}
}
}
//输出的格式没有调
for(int i = 0; i < label.size(); ++i)
{
if(arr[i][i] == 1)
cout << label[i] << endl;
}
//最后需要释放内存
return 0;
}
第一题本地通过,但牛客上始终0%,不知道什么鬼,看来面试机会都没有了
第二题真是个鬼,第三题死活33%,然后就上不去了
题面感觉是从哪复制只来的,乱的一匹,都tm是些带坑的题,而且还不知道是些啥奇葩坑
100%,60%,33%,第一题挺简单,后面的感觉就是个坑
100%,80%,33%,感觉跪了,第二题自己是拓扑排序,觉得没问题,后来看到还有20%的样例没过,觉得应该是输出顺序的问题,但来不及了,直接看第三道,做完后觉得也是ok,结果悲催的只过33%...
100%,放弃,33.333%
100 40 66.3 真变态
100%, 0, 66%。完蛋。
100 没过 33.3 感觉理解个题意都费劲2333,第二题是不是个dfs自己调用自己即可?然而输入的样式分析想哭。。。。。算了一切随缘
我的每一个节点都建立一颗树,使用BFS遍历,溢出了。。。大神们都用拓扑排序,好强。
100,80,67
我66 0 33.、。是不是稳挂
问下 为啥我没有收到 华为的笔试啊 是不是 春招自动转的简历 没有机会?
有大神说一下第一题的输入是什么形式么?死活看不懂题目啊。。。 就是一行字符串里两个数靠空格分隔还是一行一个字符串形式表示的数字啊 表示理解能力太差真心读不懂题目,本地通过,OJ上直接0%,真的这次的题目怎么连个意思都表达不清楚,是考逻辑还是考语文?
相关推荐
11-03 15:38
门头沟学院 嵌入式软件开发 Adventure_:10月下旬问过一次,10月底问过一次,说是最快1-2天就会开始谈薪了,但目前看来,还是没等到。两次电话的hr反馈基本都是国央企相对来说政策和审批会更严谨一些、更规范化流程一些,目前还在审批流程中,等定下来,就会开始谈薪和发正式offer
点赞 评论 收藏
分享
点赞 评论 收藏
分享