版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}