快手后台笔试编程题 过3.6

//第一题
// IT笔试.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string>
#include <vector>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <sstream>
#include <bitset>
#include <stack>

using namespace std;

int main0()
{
	string strScan;
	char cScan;
	vector<char> vecScan;
	vector<vector<char>> vecvecScan;
	int nFlag = 0;
	while (cin>>cScan)
	{
		if (cScan != '.' && cScan != ':')
		{
			vecScan.push_back(cScan);
		}
		else if (cScan == '.')
		{
			if (nFlag == 0)
			{
				nFlag = 4;
			}
			else
			{
				if (nFlag == 6)
				{
					cout << "Neither" << endl;
					return 0;
				}
			}
			if (vecScan.size() == 0 || vecScan.size() > 3)
			{
				cout << "Neither" << endl;
				return 0;
			}
			if (vecScan.size() > 1 && vecScan[0] == '0')
			{
				cout << "Neither" << endl;
				return 0;
			}
			string str1 = "";
			for (auto i : vecScan)
			{
				if (i > '9' || i < '0')
				{
					cout << "Neither" << endl;
					return 0;
				}
				str1 += i;
			}
			int nNum = stoi(str1);
			if (nNum > 255)
			{
				cout << "Neither" << endl;
				return 0;
			}
			vecScan.clear();
		}
		else if (cScan == ':')
		{
			if (nFlag == 0)
			{
				nFlag = 6;
			}
			else
			{
				if (nFlag == 4)
				{
					cout << "Neither" << endl;
					return 0;
				}
			}
			if (vecScan.size() == 0 || vecScan.size() > 4)
			{
				cout << "Neither" << endl;
				return 0;
			}
			vecScan.clear();
		}
	}
	if (nFlag == 4)
	{
		if (vecScan.size() == 0 || vecScan.size() > 3)
		{
			cout << "Neither" << endl;
			return 0;
		}
		if (vecScan.size() > 1 && vecScan[0] == '0')
		{
			cout << "Neither" << endl;
			return 0;
		}
		string str1 = "";
		for (auto i : vecScan)
		{
			if (i > '9' || i < '0')
			{
				cout << "Neither" << endl;
				return 0;
			}
			str1 += i;
		}
		int nNum = stoi(str1);
		if (nNum > 255)
		{
			cout << "Neither" << endl;
			return 0;
		}
		cout << "IPv4" << endl;
	}
	else
	{
		if (vecScan.size() == 0 || vecScan.size() > 4)
		{
			cout << "Neither" << endl;
			return 0;
		}
		cout << "IPv6" << endl;
	}


	system("pause");
    return 0;
}


//第二题
#include "stdafx.h"
#include <string>
#include <vector>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <sstream>
#include <bitset>
#include <stack>

using namespace std;

map<int, vector<char>> map_Nums{ make_pair(2,vector<char>{ 'a','b','c' }),
	make_pair(3,vector<char>{ 'd','e','f' }) ,make_pair(4,vector<char>{ 'g','h','i' }) ,make_pair(5,vector<char>{ 'j','k','l' }) ,make_pair(6,vector<char>{ 'm','n','o' }) ,make_pair(7,vector<char>{ 'p','q','r','s' }) ,make_pair(8,vector<char>{ 't','u','v' }) ,make_pair(9,vector<char>{ 'w','x','y','z' }) };
bool bFlag = false;

void getResult(string &strCin, int n, string strTem)
{
	if (n >= strCin.size())
	{
		return;
	}
	int nTem = strCin[n] - '0';
	for (auto i : map_Nums[nTem])
	{
		if (n == strCin.size() - 1)
		{
			if (bFlag)
			{
				cout << ", " << strTem + i;
			}
			else
			{
				bFlag = true;
				cout << strTem + i;
			}
		}
		else
		{
			getResult(strCin, n + 1, strTem + i);
		}
	}
	return;
}

int main1()
{
	string strCin;
	string strTem;
	getline(cin, strCin);
	cout << '[';
	getResult(strCin, 0, strTem);
	cout << ']' << endl;

	system("pause");
	return 0;
}

//第三题
#include "stdafx.h"
#include <string>
#include <vector>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <sstream>
#include <bitset>
#include <stack>

using namespace std;

int cmp(int n1, int n2)
{
	if (n1 >= n2)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

int main()
{
	int nNum;
	vector<int> vecNums;
	cin >> nNum;
	int nTem;
	while (nNum--)
	{
		cin >> nTem;
		vecNums.push_back(nTem);
	}
	sort(vecNums.begin(), vecNums.end(), cmp);
	int nNum1 = 0, nNum2 = 0;

	for (auto i : vecNums)
	{
		if (nNum1 > nNum2)
		{
			nNum2 += i;
		}
		else
		{
			nNum1 += i;
		}
	}
	int nResult;
	if (nNum1 - nNum2 > 0)
	{
		nResult = nNum1 - nNum2;
	}
	else
	{
		nResult = nNum2 - nNum1;
	}
	cout << nResult << endl;

	return 0;
}

//第四题来不及
//判断N,大于4,输出5,否则,输出1;
//结果通过60%

#笔试题目##快手##题解##C++工程师##校招#
全部评论
tql
点赞 回复 分享
发布于 2019-09-16 22:34
大兄弟自己写?原题不抄吗?
点赞 回复 分享
发布于 2019-09-16 22:34
😂我也第四题直接输出5,就40%
点赞 回复 分享
发布于 2019-09-16 22:35
第三题不知道怎么做,用js对象存每次用到动归参数也只过了87%……感觉好像是sum累加太大了😢
点赞 回复 分享
发布于 2019-09-16 22:36

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++&nbsp;&amp;&nbsp;Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
评论
点赞
8
分享
牛客网
牛客企业服务