近期公司笔试编程题(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zzb2019/article/details/82388951

一家披萨店制作素食披萨和肉食披萨。顾客在店里下达N个订单后,订单号码会打印在他们的

账单上。该店会在显示器屏幕上同时显示N个订单中K个素食和肉类披萨订单。这家店非常有名,会受到很多订单。

因此,为了避免混淆,素食披萨订单显示为正数,肉类披萨订单显示为负订单号。所有订单按照其在屏幕上显示的顺序派送。

每当有显示的订单完成后,就将它从显示屏幕上删除,并将下一个订单添加到末尾。

一夫妇带着他们的孩子来吃披萨。孩子非常调皮,为了让他一直有事可做,他的父母要他列出店中屏幕上显示的每组K个订单中第一个肉类披萨的订单号。

编写一个算法,帮他列出每派送一个订单给顾客后,屏幕上显示的第一个肉类披萨的订单号。

输入

函数/方法的输入包含三个参数-

numOfOrders,表示所下达的订单总数(N)的整数。

size,表示屏幕上所显示订单数(K)的整数。

orders,表示顾客下达订单中素食披萨和肉类披萨订单号的整数列表。

输出

返回每次向顾客派送订单后,屏幕上显示的每组K个订单的第一个肉类披萨的订单号,如果屏幕未显示任何披萨订单,则返回0.

约束条件

0<= numOfOrders <=10^6

0<= size <=numOfOrders

0<=orders[i]<=10^9

0<=i<numOfOrders

示例

输入:

numOfOrders=6

size=3

orders=[-11,-2,19,37,64,-18]

输出

[-11,-2,0,-18]

源代码:

#include<iostream>
using namespace std;
#include<stdio.h>
#include<vector>
#include<assert.h>
vector<int> fun(int numOfOrders, int size, int*orders)
{
	vector<int>vec;
	for (int i = 0; i < numOfOrders - size + 1; i++)
	{
		int m = 0;
		for (int j = i; j < i + size; j++)
		{
			if (*(orders + j) < 0)
			{
				vec.push_back(*(orders + j));
				m = 1;
				break;
			}
		}
		if (m == 0)
		{
			vec.push_back(0);
		}
	}
	return vec;
}
int main()
{
	int size = 3;
	int numOfOrders = 6;
	int orders[] = { -11,-2,19,37,64,-18 };//-11 -2 0 -18
	vector<int> result;
	result = fun( numOfOrders,size,orders);
	vector<int>::iterator it;
	cout << "[";
	for (it = result.begin(); it != result.end(); ++it)
	{
		cout <<*it << ",";
	}
	cout << "]" << endl;
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zzb2019/article/details/82388951