淘宝的推荐系统 计算之道2A
Posted pengpenggege
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了淘宝的推荐系统 计算之道2A相关的知识,希望对你有一定的参考价值。
小明刚刚入职淘宝,老大给他交代了一个简单的任务,实现一个简易的商品推荐系统。
这个商品推荐系统的需求如下:
一共有 n 件商品可以被推荐,他们的编号分别为 1 到 n。每件商品都有一个价格,编号为 i的商品价格为 pi? 元。
现在需要给用户推荐尽可能多的商品,但是要保证按照编号上升的顺序给用户依次推荐商品,并且,相邻商品
的价格之差的绝对值不能超过 d。注意,第一个推荐的商品价格没有限制。
输入格式
输出格式
对于每组数据,输出一行一个整数,表示最多能推荐的商品个数。
样例输入
2 6 3 5 7 3 6 10 9 8 6 4 7 9 5 8 1 9 10
样例输出
4 7
思路:采取动态规划的思想,dp[i]表最后一个商品为第i件的最大数量,m[i]表示当最后一个商品价格为i的最大数量,对于每个d[i],
扫描出现过的max(1,a[i]-d)到min(a[i]+d,100000)区间,
代码如下:
int getnum(int l,int r,int num)
{
int ans=0;
for(int i=l;i<=r;i++)
{
ans=max(ans,m[i]);
}
return ans;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>d;
memset(a,0,sizeof(a));
memset(m,0,sizeof(m));
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
int num=getnum(max(1,a[i]-d),min(a[i]+d,100000),a[i]);
dp[i]=num+1;
m[a[i]]=max(m[a[i]],dp[i]);
}
int ans=1;
for(int i=1;i<=n;i++)
{
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
}
return 0;
}
以上是关于淘宝的推荐系统 计算之道2A的主要内容,如果未能解决你的问题,请参考以下文章
云计算:为什么说存储是云计算发展瓶颈之一?虚拟化是解决之道!