考虑一个雇佣问题:你是一个老板,向猎头公司委托寻找一个秘书职位,猎头每天为你推荐一个应聘者,而你对他进行面试。你的目标是,任 用所有应骋者中资质最好的。但由于秘书职位不能空缺,在每次面试完后,都要立即给面试者结果,所以只要当天的面试者资质比现任秘书好,你就解雇现任的秘 书,而重新雇佣当天的应骋者。下面给出面试n个人的伪代码:
- HIRE_ASSISTANT(n) {
- 1 best = 0; // candidate 0 is a least-qualified dummy candidate
- 2 for i = 1 to n {
- 3 interview candidate i;
- 4 if candidate i is better than candidate best {
- 5 best = i;
- 6 hire candidate i;
- 7 }
- 8 }
- }
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
void PrintArr(int *pnArr, int nLen)
{
for (int i = 0; i < nLen; i++)
{
printf("%d ", pnArr[i]);
}
printf("\n");
}
void HireAssistant(int *pnArr, int nLen)
{
int nMax = pnArr[0];
printf("%d ", pnArr[0]);
for (int i = 1; i < nLen; i++)
{
if (nMax < pnArr[i])
{
printf("%d ", pnArr[i]);
nMax = pnArr[i];
}
}
printf("\n");
}
int main()
{
int nArr[10];
srand(time(NULL));
for (int i = 0; i < 10; i++)
{
nArr[i] = rand()%100;
}
PrintArr(nArr, 10);
HireAssistant(nArr, 10);
system("pause");
return 0;
}