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;
}


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

相关推荐

7 14 评论
分享
牛客网
牛客企业服务