2020.3.14百度笔试编程题答案(C++/PHP)

选择题太菜了,编程做得还不错,发一下....
第一题,买饮料:
#include<cstdio>
using namespace std;
#define N 1100
#define K 1100
int n,k;
int like[N],buy_count[K]={0};

int main(){
	int i,t,sum=0;
	
	scanf("%d%d",&n,&k);
	for(i=0;i<n;i++){
		scanf("%d",&t);
		buy_count[t]++;
	}
	for(i=1;i<=k;i++){
		sum+=(buy_count[i]/2+buy_count[i]%2);
	}
	printf("%d\n",sum);
	return 0;
}

第二题,分岔。比较坑,一开始以为是动态规划来着,结果发现直接搜索就可以了....幸好在交卷前1分钟试一下搜索发现可以,不然凉了....
#include<cstdio>
#include<map>
#include<unordered_map>
#include<queue>
using namespace std;
map<int,int> fork_count;//部队分开的数量
int n,k; 

int main(){
	int i,j,x,y,min_query;
	queue<int> q;
	int count=0,t;
	
	scanf("%d%d",&n,&k);
	q.push(n);
	while(!q.empty()){
		t=q.front();
		q.pop();
		if(t>k&&(t-k)%2==0){
			//可分
			x=(t-k)/2;
			y=x+k;
			q.push(x);
			q.push(y); 
		}else count++;//不可分 
	}
	printf("%d\n",count);
	return 0;
}
第三题,拼火柴。用动态规划。比较坑的点一个是两个结果是要像字符串一样拼起来,例如123+456=123456;一个是要注意“火柴要全部用完”这个条件。
#include<cstdio>
#include<string>
#include<map>
using namespace std;
#define N 10010
int cost[10]={0,2,5,5,4,5,6,3,7,6};
int n,m;
string res[N]={""};

bool bigger(const string& x,const string& y){
	if(x.size()!=y.size()) return x.size()>y.size();
	else return x>y;
}

int main(){
	char buf[5];
	string sign;
	int i,j,value;
	int t_cost;
	string x,y;
	
	scanf("%d%d",&n,&m);
	for(i=0;i<m;i++){
		scanf("%s",buf);
		sign=buf;
		sscanf(buf,"%d",&value);
		t_cost=cost[value];
		//printf("sign=%s value=%d cost=%d\n",sign.c_str(),value,t_cost);
		if(res[t_cost]!=""){
			if(bigger(sign,res[t_cost])){
				res[t_cost]=sign;
			}
		}else res[t_cost]=sign;
	}
	
	/*for(i=1;i<=9;i++){
		printf("res[%d]=%s\n",i,res[i].c_str());
	}*/
	
	for(i=2;i<=n;i++){
		for(j=0;j<=i;j++){
			x=res[j];
			y=res[i-j];
			if(x!=""&&y!=""&&bigger(x+y,res[i])){
				res[i]=x+y;
			}
		}
		//printf("i=%d res=%s\n",i,res[i].c_str());
	}
	printf("%s\n",res[n].c_str());
	return 0;
}


许愿百度= =
#百度笔试##百度##笔试题目#
全部评论
第二道记忆化递归就好,第三道没看到要用完火柴这个条件,结果只过了40%,彻底凉凉了,我靠,我,刷了快800道力扣了,然而我依然还是那么菜,我准备了那么多高阶算法和高阶的数据结构,什么树状数组,什么线段树,什么匈牙利,差点还把ACM的题目刷了,我实在是想不懂我为毛还是那么垃圾,到底是你百度编程题变态还是我力扣刷错了方向?
点赞 回复 分享
发布于 2020-03-15 14:04
我第一道就没有做出来,我至今都没想明白为什么?sum+=(count[i]+1)/2;这不就是往上取整吗?我靠。结果一个测试用例都过不了,结果心态彻底奔溃,为什么???????????
点赞 回复 分享
发布于 2020-03-15 14:01
膜拜,第三题刚把转移方程想出来就没时间了...
点赞 回复 分享
发布于 2020-03-15 06:43
膜一下,第二题用递归和动规都超内存了,只能80%AC。 原来用队列来保存当前的节点信息就可以,学到了。
点赞 回复 分享
发布于 2020-03-14 22:55
😂因为时间急迫,代码可能很难看,还有很多很奇怪的变量和注释
点赞 回复 分享
发布于 2020-03-14 22:48
膜一下
点赞 回复 分享
发布于 2020-03-14 22:46
大神 厉害666
点赞 回复 分享
发布于 2020-03-14 22:38

相关推荐

07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
7
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务