百度笔试

哈哈哈哈,编程题第一题a了,被实验室小伙伴一顿夸,有点飘了,去卫生间都是跳着去的🤣~回来记录一下
第一题是n个长度为m的字符串,任意两个字符串i和j,交换其前k个字符,可以将交换后的字符串重复这个操作,问共有多少种字符串,结果对1000000007取余。大概是这个意思~
int main()
{
	int n, m;
	cin >> n >> m;
	vector<string> data(n);
	for (int i = 0; i < n; i++)//输入数据
	{
		cin >> data[i];
	}
	vector<int> count(n);//保存每个位上字符出现的个数
	for (int i = 0; i < m; i++)
	{
		unordered_map<char, int> map;
		for (int j = 0; j < n; j++)
		{
			if (map.find(data[j][i]) == map.end())
			{
				map[data[j][i]]++;
			}
		}
		count[i] = map.size();
	}
	long res = 1;
	for (int i = 0; i < m; i++)//结果相乘
	{
		res = res % 1000000007;
		res *= count[i];
	}
	cout << res % 1000000007;
	return 0;
}
第二题1-n的一个排列p1-pn,组成的无向连通图中 若i和j有边相连,对应pi和pj也有边相连,输出Yes,否则输出No,比较坑的是每次可能有多个测试用例😑
投机取巧了,方法可能不对,但是通过了18%
int main()
{
	int t;
	cin >> t;
	for (int k = 0; k < t; k++)
	{
		int n;
		cin >> n;
		vector<int> data(n);
		vector<int> temp(n);
		for (int i = 0; i < n; i++)
		{
			cin >> data[i];
			temp[i] = i + 1;
		}
		bool tmp = true;
		for (int i = 0; i < n; i++)
		{
			int num = data[i];
			swap(data[i], data[num]);
			if (data[i] != i + 1)
			{
				cout << "No" << endl;
				temp = false;
				break;
			}
		}
		if (tmp)
		{
			cout << "Yes" << endl;
		}
	}
	return 0;	
}
可是选择和那个什么问答还有系统设计答得不好,就怕后面没时间写编程,前面就嗖嗖的写,我太难了

#百度##笔试题目##算法工程师#
全部评论
感觉到了满满的成就感,祝你明天收到测评。。。
点赞 回复 分享
发布于 2019-09-24 21:41
厉害厉害
点赞 回复 分享
发布于 2019-09-24 21:54
太强了
点赞 回复 分享
发布于 2019-09-25 00:47
😂好可爱哈哈哈,祝顺利
点赞 回复 分享
发布于 2019-09-25 00:59
老哥收到面试通知了吗
点赞 回复 分享
发布于 2019-10-08 16:37

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
点赞 评论 收藏
分享
4 9 评论
分享
牛客网
牛客企业服务