网易笔试8.8前三题

1.输入一组字符串 返回其最短回文字符串

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 100
bool check(char* ch1);
int main(void)
{
	char ch1[MAXSIZE];
	scanf("%s", ch1);
	int copy ;
	int curlen = strlen(ch1);
	for (copy = 0; !check(ch1); copy++)
	{
		for (int i = copy; i >= 0; i--)
		{
			ch1[curlen + copy - i] = ch1[i];
		}
		ch1[curlen+copy+1] = '\0';
	}
	printf("%s",ch1);
	return 0;
}
bool check(char* ch1)
{
	int left = 0, right = strlen(ch1) - 1;
	while (left < right)
	{
		if (ch1[left] != ch1[right])
			return false;
		left++;
		right--;
	}
	return true;
}

2.n个物品,每个物品有1个价值,分给两人 要求两个人总价值相同 最少扔掉多少价值的物品才能满足要求

/*dfs+剪枝*/
/*每个礼物有三种可能 要么 给A 要么 给B 要么丢掉 */
#include<stdio.h>
#define maxsize 15
void dfs(int* gift, int count, int* result, int n,int value1,int value2);
int max(int a, int b);
int main(void)
{
	int n;//礼物个数
	scanf("%d",&n);
	int gift[maxsize];
	int sum = 0;
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &gift[i]);
		sum += gift[i];
	}
	int result = 0;
	dfs(gift, 0, &result, n, 0, 0);
	result = sum - result;
	printf("%d",result);
	return 0;
}
void dfs(int* gift, int count, int* result, int n,int value1,int value2)
{
	/*终止条件*/
	if (count == n)
	{
		if (value1 == value2)
			*result = max(*result, value1 * 2);
		return;
	}
	/*做选择*/
	for (int i = 0; i < 3; i++)
	{
		if (i == 0)//给A
			value1 += gift[count];
		else if (i == 1)//给 B
			value2 += gift[count];
		dfs(gift, count + 1, result, n, value1, value2);
		/*撤销选择*/
		if (i == 0)
			value1 -= gift[count];
		else if(i == 1)
			value2 -= gift[count];
	}
}
int max(int a, int b)
{
	return a > b ? a : b;
}

3.n个人排队买票 两种买票方式

1.单独买票

2.与后面的人一起买票

卖票员早上八点卖票 最早几点能卖完票

#include<stdio.h>
#define maxsize 2000
int min(int a, int b);
int main(void)
{
	int t;
	int a[maxsize];
	int b[maxsize];
	scanf("%d",&t);
	for (int i = 0; i < t; i++)
	{
		int n;
		scanf("%d",&n);
		for (int i = 0; i < n; i++)
			scanf("%d",&a[i]);
		for (int i = 0; i < n - 1; i++)
			scanf("%d", &b[i]);
		int dp[maxsize];
		/*初始化*/
		dp[0] = 0;
		dp[1] = a[0];
		for (int i = 2; i <= n; i++)
		{
			dp[i] = min(dp[i - 1] + a[i - 1], dp[i - 2] + b[i - 2]);
		}
		int hour, minute,second;
		hour = dp[n] / 3600;
		dp[n] = dp[n] % 3600;
		minute = dp[n] / 60;
		second = dp[n] % 60;
		if (8 + hour > 12)
		{
			hour = 8 + hour - 12;
			printf("%02d:%02d:%02d pm", hour, minute, second);
		}
		else
			printf("%02d:%02d:%02d am", 8+hour, minute, second);
		printf("\n");
	}
	return 0;
}
int min(int a, int b)
{
	return a < b ? a : b;
}


#笔试题目##网易#
全部评论
第三题有没有可能,前边的人帮后边的人买了,然后后边的人就不能帮他后边的人买了
点赞 回复 分享
发布于 2020-08-09 09:32

相关推荐

头像
01-12 14:44
已编辑
百度_高级研发工程师
今天看到了某平台攻击牛友的帖子,段段今天打算为牛友们说句话,我们的努力到底有没有意义。&nbsp;(原文复述:感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的区味)&nbsp;&nbsp;粗鄙,无礼,傲慢,攻击,在这里我没有看到任何有用的分析,我只看到了屁股决定脑袋的攻击,我只看到了嫉妒和眼红。一、去医院不看病你去逛街吗&nbsp;去医院你不去看病你去逛街吗?去加油站不加油你去抽烟吗?去部队你不训练战斗技能你去养老吗?来牛客你不努力求职你来干什么来了。&nbsp;牛客本身就是个求职平台,大家分享有用的知识,分享面经,分享offer,分享求职经验的,来牛客不就干这个来了吗?有什么问题吗?...
给个好点的工作吧啊啊...:不知道我看的是不是和博主同样的帖子,我记得原帖是表达的是有些匿名老是发几十万的offer侮辱价,然后就有牛友觉得凡尔赛了导致后面的评论有些偏激。我觉得这个最近闫学晶那个事情有点类似了,她说他儿子一年只能赚七八十万家庭生活都难以为继,不说普通家庭,多少大厂的程序员都赚不到这个数字,大部分家庭看到这种发言肯定会难受的一p,生活的担子又这么重,人都是需要发泄情绪的,互联网就是个极佳的载体,所以很多人直接就喷她了,人在情绪发泄的时候是不思考的,否则就不叫发泄了。然后还有一个点,段哥假定了这些喷的人全都是“躺平的”,这点可能有失偏颇,很多人一直在努力,但是始终缺乏天时地利人和的某一个条件,这点相信段哥找工作的过程中深有体会。绝大部分人都以结果的失败去否认了努力的全过程,可能只是别人努力的方向错了。就像一次面试,可能你准备了很久,结果面试官就是比较奇葩,一直问没有学习到的领域或知识点,然后有人凭一个挂掉的结果就直接给你扣了一个“躺平”的帽子,觉得挂掉是你不够努力,您心里滋味如何?再说点近点的,我也是od,多少同事深夜无偿加班,涨过一分工资吗?多少外包的技术大牛因为学历被困在外包,连od都进不去,这些人难道不努力吗?只是限制与生活、公司制度等等之类的无奈罢了。说到努力,又想到李家琦79元眉笔事件,这么多年有没有认真工作?有没有涨工资?他嘴里说出来是那么的理所当然,打工牛马都知道“任劳任怨”,“认真工作”真能涨工资?只干活不发声就等着被摘果子吧,企业里永远都是“汇报杰出者”升的最快(当然不是所有企业),这种事情相信段哥包括我甚至大部分od都经历过。最近辞职回老家,和老爸散步每次他都会感慨街上的蔬菜小贩多不容易,他们晚上就窝在那种三轮小货车的驾驶室里,腿都伸不直,我们这里晚上零下了,只盖一条薄毛毯,始终舍不得住我们镇上几十块的酒店,因为一车蔬菜就赚几百块顶多一千而且要卖好久,这样的例子还有太多了。这种芸芸众生可能辛苦了一天之后,打开手机看到网上的凡尔赛发言,跟风喷了几句发泄情绪,我觉得这种人不应该扣上“躺平”的帽子。我觉得大部分正常人都是努力的,或者曾经努力过,但世界上有太多努力解决不了的无奈了,甚至说你都没有那个努力的机会,不过正因如此,才显得坚持不懈的努力奋斗之人的难得可贵,认清生活的真相后仍然热爱生活,敢于直面现实的淋漓。
段段STEADY觉醒与突...
点赞 评论 收藏
分享
Cons_W:我9本的,同样找不到。感觉是岗位太少的问题,可能12月份没多少岗位的。
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

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