腾讯笔试:后台笔试题吐槽

今天2019.09.20,腾讯后台服务器笔试,5道编程题,全和数字有关,5道题全是数字啊,弄不好就会越界,越界,越界,大数字越界在我这无解😂
贴了代码,大家交流
第一题AC90%,
typedef struct TEST
{
	int N;
	string strPhone;
}STTEST;


int nT;
cin >> nT;
vector<STTEST> vstTests;
while (nT--)
{
	STTEST stTest;
	cin >> stTest.N;
	cin.get();
	getline(cin, stTest.strPhone);
	vstTests.push_back(stTest);
}
vector<int> vFlags(vstTests.size(), 0);
for (int i = 0; i < vstTests.size(); i++)
{
	bool bFlag = true;
	for (int j = 0; j < vstTests[i].strPhone.length(); j++)
	{
		if (vstTests[i].strPhone.at(j) >= '0' && vstTests[i].strPhone.at(j) <= '9')
			continue;
		else
		{
			bFlag = false;
			break;
		}
	}
	if (vstTests[i].N < 11
		|| vstTests[i].strPhone.find('8') == -1
		|| !bFlag)
	{
		vFlags[i] = -1;
		continue;
	}

	if (vFlags[i] != -1)
	{
		//vstTests[i].strPhone = "18888888888";
		int nIdx = vstTests[i].strPhone.find('8');
		int nLength = vstTests[i].strPhone.length() - nIdx;
		if (nLength < 11)
			vFlags[i] = -1;
	}
}

for (int i = 0; i < vFlags.size(); i++)
{
	if (vFlags[i] == 0)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
}
第二题AC10%,
typedef struct TEST
{
	long long nX;
	long long nY;
}STTEST;

void swap(STTEST& st1, STTEST& st2)
{
	STTEST st_tmp;
	st_tmp.nX = st1.nX;
	st_tmp.nY = st1.nY;

	st1.nX = st2.nX;
	st1.nY = st2.nY;

	st2.nX = st_tmp.nX;
	st2.nY = st_tmp.nY;
}

int main()
{
	long N;
	cin >> N;
	vector<STTEST> vstTests;
	long long nCount = 0;
	while (N--)
	{
		STTEST stTest;
		cin >> stTest.nX >> stTest.nY;
		nCount += stTest.nX;
		vstTests.push_back(stTest);
	}

	for (long i = 0; i < vstTests.size() - 1; i++)
	{
		for (long j = 0; j < vstTests.size() - i - 1; j++)
		{
			if (vstTests[j].nY < vstTests[j + 1].nY)
				swap(vstTests[j], vstTests[j + 1]);
		}
	}

	vector<long long> vDelay(nCount, -1);
	long long nIdx = 0;
	for (long i = 0; i < vstTests.size(); i++)
	{
		while (vstTests[i].nX--)
			vDelay[nIdx++] = vstTests[i].nY;
	}
	long long nMax = 0;
	for (long long i = 0; i < vDelay.size() / 2; i++)
	{
		long long nSum = vDelay[i] + vDelay[nCount - i - 1];
		if (nSum > nMax)
			nMax = nSum;
	}

	cout << nMax << endl;
	system("pause");
	return 0;
}
第四题AC60%,
int N, K;
cin >> N >> K;
vector<int> vDatas;
while (N--)
{
	int a;
	cin >> a;
	vDatas.push_back(a);
}

for (int i = 0; i < K; i++)
{
	int n = 0;
	while (n < vDatas.size() && vDatas[n] == 0)
	{
		n++;
	}
	if (n == N)
	{
		cout << 0 << endl;
	}
	else
	{
		int nMin = vDatas[n];
		for (int j = 0; j < vDatas.size(); j++)
		{
			if (vDatas[j] != 0 && vDatas[j] < nMin)
			{
				nMin = vDatas[j];
			}
		}
		for (int j = 0; j < vDatas.size(); j++)
		{
			if (vDatas[j] >= nMin)
				vDatas[j] -= nMin;
		}
		cout << nMin << endl;
	}
}

system("pause");
return 0;

#笔试题目##腾讯##吐槽#
全部评论
第一个0.6 第二个也是0.1超时 第三个本地没问题 上传一直0 心态崩了 不做了😶
点赞 回复
分享
发布于 2019-09-20 22:21
第三题感觉判题系统有问题
点赞 回复
分享
发布于 2019-09-20 22:23
阅文集团
校招火热招聘中
官网直投
排序别自己写了,用qsort或者学学stl
点赞 回复
分享
发布于 2019-09-21 00:18
100 10 0 50 20心态崩了越界越界
点赞 回复
分享
发布于 2019-09-21 09:46

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务