读书人

软件工程师笔试算法有关问题 时间填充

发布时间: 2012-10-29 10:03:53 作者: rapoo

程序员笔试算法问题 时间填充问题
广告的时间填充 假如电视播放空闲期有10分钟,有几个时间的广告,例如:1分钟的,2分钟的和5分钟的,要求:1.将空闲时间必须填满2.要求播放广告总数最小3.各个广告至少播放一遍

输入:空闲时间段,广告的各个播放时间段
输出:广告播放策略,各个广告的播放次数

例如上面的为5分钟的一次,两分钟的2次一分钟的一次


[解决办法]
按照贪心算法,去查找,每次找最大的,直到填满时间片段
[解决办法]
运筹学包括很多东西的,比如说线性规划,动态规划 ,图规划 ,存储论,指派问题,作业分配问题,等等都算是运筹学的知识吧,当然我也只是 在书上看到的。。。。
[解决办法]
http://topic.csdn.net/u/20120524/17/50808003-23db-4c39-926f-aaea1061a297.html?97604
自己去看这个讨论吧

[解决办法]
看了一下 感觉用C的几个循环就能解决你的问题 :
#include<stdio.h>
#define a 5*i //广告i的播放时间
#define b 2*j //同上
#define c k //同上

int main(){

int i,j,k; //分别表示每个广告的播放次数

for(i=1;a<10;i++) //要求每个广告至少播放一次,所以初始为1
{
for(j=1;a+b<10;j++)
{
for(k=1;a+b+c<=10;k++)
{
if(a+b+c==10)
{
printf("i=%d,j=%d,k=%d\n",i,j,k); //输出各种播放策略
break;
}
}
}
}
return 0;
}

写得比较简单 也能满足你的需求。你题目中的各种限制条件可以进行相应的修改,进行合法化判断。
不知道是不是你想要的?

读书人网 >软件架构设计

热点推荐