首页 新闻 会员 周边 捐助

广告周期轮换算法

0
悬赏园豆:30 [已解决问题] 解决于 2013-12-17 20:49

需求:假如有A,B,C 三家公司,分别在博客园网站上做广告!

         为了绝对的公平,决定规定如下:

        今天(第1天):A 公司广告排第1位,B 公司广告排2位,C 公司广告排3位

         明天(第2天):B 公司广告排第1位,C 公司广告排2位,A 公司广告排3位

         后天(第3天):C 公司广告排第1位,A 公司广告排2位,B 公司广告排3位

      3天为一个周期,以此为循环。

      

  

 

 

 

  

心有多大,舞台就有多大的主页 心有多大,舞台就有多大 | 初学一级 | 园豆:99
提问于:2013-12-17 09:20
< >
分享
最佳答案
0

你这个算法是不公平的

B公司位置好于A公司。C公司正好。

B公司在第一位置出现了一次,在第二位置出现了两次。

A公司在第一位置出现了一次,在第三位置出现了两次。

公平的话,应该在每个位置各出现一次。象C公司一样。

你想问什么?代码还是算法?什么代码?你不觉得你的问题缺少太多信息了吗?

收获园豆:15
爱编程的大叔 | 高人七级 |园豆:30844 | 2013-12-17 10:35

@心有多大,舞台就有多大: 

    今天(第1天):A 公司广告排第1位,B 公司广告排2位,C 公司广告排3位

         明天(第2天):B 公司广告排第1位,C 公司广告排2位,A 公司广告排3位

         后天(第3天):C 公司广告排第1位,A 公司广告排2位,B 公司广告排3位

你要是这样写我就不会看错了。

很简单的,还要什么算法,

第1位A、B、C、A、B、C、A、B、C

第2位B、C、A、B、C、A、B、C、A

第3位C、A、B、C、A、B、C、A、B

这个需要算法吗?

爱编程的大叔 | 园豆:30844 (高人七级) | 2013-12-17 14:04

@心有多大,舞台就有多大: 

你还没有看出来规律吗?想怎么解?给你代码?

假设有N个人排队看美女,每个人都有一个号码,1~N。

第一天按1~N的顺序看完美女。

第二天,第1个走开,第2个移到第1位,第3也往前移一位,依次类推。原来的第1个变成最后一个,也就是N。然后按照这个顺序看美女。

第三天,参照第二天的处理方法。

....

第N天,参照第二天的处理方法。

爱编程的大叔 | 园豆:30844 (高人七级) | 2013-12-17 14:24

@心有多大,舞台就有多大: 

你想要啥代码?

C#、JAVASCRIPT、FORTORN、PASCAL、C++、F#、JAVA、PHP、COBOL、VB.NET

如果你知道算法,还没有办法自己写代码,给你代码又有什么用呢?

爱编程的大叔 | 园豆:30844 (高人七级) | 2013-12-17 15:42
其他回答(3)
0

问题是求某公司某日的广告位置吗?

gunsmoke | 园豆:3592 (老鸟四级) | 2013-12-17 12:01

可以这样理解

0

解:假设有N个公司,那么第一天为

1 2 3 4 ...  N     那么第X个公司的第Y天的位置为

N - mod(N+Y-X-1,N)   

你可以按照上面的公司尝试一下。

1 2 3 4 5

select 5 - mod(5+1-2-1,5) from dual

收获园豆:10
bitbug | 园豆:470 (菜鸟二级) | 2013-12-17 14:48

mod 是什么意思

@心有多大,舞台就有多大: 取模。相当于%

支持(0) 反对(0) bitbug | 园豆:470 (菜鸟二级) | 2013-12-17 15:08
0

for或者while

for(var i=1 ;i++)

{

if(i%3==1)

{

  ABC;

}else if(i%3==2)

{

  BCA;

}

else

{

  CAB;

}

}

收获园豆:5
拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-12-17 20:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册