网易有道笔试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易有道笔试相关的知识,希望对你有一定的参考价值。

题目:

输入

输入中有多组测试数据。每组测试数据的第一行包含两个整数n和k(1 =< n =< 1000, 1=< k =< 99),表示购票请求数量和影院大小。第二行为空格分隔的n个整数mi,mi表示每次要求购买的票数(1<=mi <= k)。

输出

对每组测试数据输出n行,每个购买请求的结果为一行。如果无法在一行中买到mi个连续的座位,则在对应的行中输出-1。否则输出三个空格分隔的整数x, yl, yr,为所买电影票的排号和起止位置。


样例输入

2 1

1 1

4 3

1 2 3 1

样例输出

1 1 1

-1

2 2 2

1 1 2

3 1 3

2 1 1

#include <iostream>
#include <vector>
using namespace std;

//计算该位置到中心的距离
int distanceToCenter(int x, int y, int xc, int yc)
{
	int xdis = x>xc ? x - xc : xc - x;
	int ydis = y>yc ? y - yc : yc - y;
	return xdis + ydis;
}
int main()
{
	int n, k;
	while (1){
		//1、
		cin >> n >> k;
		int xc = k / 2, yc = xc;
		int i = 0;
		int* a = new int[k*k];//值为0表示空座,为1表示已经被选
		for (i = 0; i<k*k; ++i){
			a[i] = 0;
		}
		//2、
		i = 0;
		vector<int> v;
		int tmp = 0;
		while (i<n){
			cin >> tmp;
			v.push_back(tmp);
			++i;
		}
		//3、
		for (i = 0; i<v.size(); ++i){//i个请求结果,每个请求的票数一次保存在v中
			int retdis = 0x7fffffff;
			vector<int> vret;
			int tmp = v[i];
			int row = 0;
			for (int j = 0; j<k; ++j){//j表示行
				for (int m = 0; m<k; ++m){//m表示列
					tmp = v[i];
					while (m<k+1 - v[i] && a[j*k + m] == 1)
						++m;
					if (m >= k+1 - v[i]){
						break;
					}
					//判断有无v[i]个空的座位
					int sumdis = 0;
					int th = 0;
					while (tmp--){
						if (a[j*k + m + th] == 0){
							sumdis += distanceToCenter(j, m + th, xc, yc);
							++th;
						}
						else
							break;
					}
					if (tmp != -1){//没有足够的空座位
						sumdis = 0;
					}
					else{//有足够的空位
						if (sumdis<retdis){
							retdis = sumdis;
							vret.clear();
							for (int t = 0; t < th;++t){
								vret.push_back(m + t);	
								row = j;
							}
						}
					}
					tmp = vret.size();
				}
			}
			if (vret.size() != 0){
				for (int h = 0; h < tmp; ++h){
					a[row*k+vret[h]] = 1;
				}
				cout << row + 1 << " " << vret[0] + 1 << " " << vret[vret.size() - 1] + 1 << endl;
				vret.clear();
			}
			else{
				cout << "-1" << endl;
			}
		}
		delete[] a;
	}
	return 0;
}

代码有多层循环,变量什么时候清零,什么时候赋值还是需要细心的,

我只测试了部分输入输出,代码中一定还有BUG,我会尽量减少BUG的

本文出自 “零蛋蛋” 博客,谢绝转载!

以上是关于网易有道笔试的主要内容,如果未能解决你的问题,请参考以下文章

爬虫案例之网易有道翻译Python代码改写

网易有道词典下载|网易有道词典app下载

反反爬实战网易有道翻译(免费即时的多语种在线翻译)

网易雷火 笔试 4.25

算法98---瞌睡(网易笔试)

算法99---丰收(网易笔试)--二分查找