滴滴笔试

第一题感觉用冒泡排序,里面加上if判断,可惜没时间做了
第二题本质上是最长公共子序列问题,不过加入了总cost的约束,亲测用最长公共子序列做是0.4几,加了约束,感觉还是有漏洞,最后定格在0.64
贴上第二题代码
#include<iostream>
#include<cstring>
using namespace std;


int main(){
	int n;
	cin>>n;
	int total,cost;
	cin>>total>>cost;
	int A[n 5];
	int B[n 5];
	for(int i=1;i<=n;i  ) cin>>A[i];
	for(int i=1;i<=n;i  ) cin>>B[i];
	
	int memo[n 5][n 5];
	int vis_A[n 5];
	int vis_B[n 5];
	memset(vis_A,0,sizeof(A));
	memset(vis_B,0,sizeof(B));
		
	for(int i=0;i<=n;i  ) 
	{
		for(int j=0;j<=n;j  )
		{
			if(i==0||j==0) memo[i][j]=0;
			else if(A[i]==B[j]) {
				memo[i][j]=memo[i-1][j-1] 1;
				vis_A[i]=1;
				vis_B[i]=1;
			}
			else memo[i][j]=max(memo[i-1][j],memo[i][j-1]);
		}
	}
	
	int ans = memo[n][n];
	int cnt1,cnt2;
	for(int i=n;i>0;i--){
		if(vis_A[i]==1){
			cnt1=i;
			break;
		} 
	}
	for(int i=n;i>0;i--){
		if(vis_B[i]==1){
			cnt2=i;
			break;
		} 
	}
	int t1=cost*ans (2*n-cnt1-cnt2);
	if(t1<=total) cout<<ans;
	else{
		while(t1>total){
			ans--;
			t1=t1-cost 2;
		}
		cout<<ans;
	}
	
	return 0;
} 


#滴滴##笔试题目##题解##秋招#
全部评论
两道题应该都算hard难度的了
点赞 回复 分享
发布于 2019-08-27 20:52
冒泡过不了,时间复杂度超了
点赞 回复 分享
发布于 2019-08-27 20:59
第一道题ac,第二道竟然没写出来!这么简单的题都写不出,真的是菜死我了……气人!!!
点赞 回复 分享
发布于 2019-08-27 21:13
项目收益各列最大值相加,挺简单的
点赞 回复 分享
发布于 2019-08-27 21:45

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
1 5 评论
分享
牛客网
牛客企业服务