淘宝的推荐系统 计算之道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;
}

转载于:https://www.cnblogs.com/pengpenggege/p/9036406.html

现在你是一个大连理工大学机器人加工领域的副教授,需要给本科生上一门“连杆-舵机-智能抓取”的机器人设计任务,并以此做一个上课PPT,请你先根据以下要点,给我设计PPT的内容和要点以及需要的图例等相关内容。我暂定需要包括: 第一部分:机器人设计基本概念,为后面的设计实例做准备(机构设计分类、运动学基本概念、控制方法的基本分类); 第二部分:设计流程,将设计的步骤整合为一个可以让本科生一步一步理解、去实现的流程示意; 第三部分:设计案例,例如从设计任务出发,设计机器人尺寸(包括但不限于DH参数等概念),运动学仿真建模(包括不限于正逆运动学穿插,验证DH参数),探究空间可达性(仿真软件,蒙特卡罗法),计算电机各选型参数,选参数购买(淘宝、3d打印),设计电路连接,单片机控制实现,要求这每一步怎么设计、怎么仿真、寻找途径等等 第四部分:你可以自己拓展总结一个课程的最后一个模块 请你按照我的要求先考虑第三部分,给我一个设计PPT的详细内容、注意点和你的补充内容,并充分考虑这是一个给本科生上课的PPT,让他们有足够的参考性,让他们知怎么去做,条理清晰,给出明确途径。现在给我一个针对三连杆机器人的设计流程,针对以上要求,根据以下流程,详细给出设计一款基于连杆-舵机的三自由度机械臂 控制算法设计:根据运动学模型和控制要求,编写合适的控制算法,实现对机器人的精确控制。 电路设计连接:设计机器人的电路系统,包括电源、舵机驱动电路、传感器接口电路等,并进行实际的电路连接和调试。 单片机控制实现:将控制算法移植到单片机(51)中,通过编写程序实现对机器人的实时控制,并进行功能测试和优化。
04-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值