时间限制:3秒
空间限制:32768K
热度指数:262
算法知识视频讲解
题目描述
有一个单词清单,请设计一个高效算法,计算由清单中单词组成的最大子矩阵,要求矩阵中的行和列都是清单中的单词。
给定一个string数组dic,代表单词清单,同时给定清单的大小n,请返回最大子矩阵的面积。保证单词清单的大小小于等于50,且某一长度的串的数量小于等于12。
测试样例:
["aaa","aaa","aaa","bb","bb"]
返回:9
思路:这道题如果是字母不一样,那就难做了,我就按照字母相同的来做,结果过了
代码:
#include<iostream>
#include<string.h>
#include<vector>
#include<map>
using namespace std;
int findAlphaMatrix(vector<string> dic, int n) {
int i = 0;
map<string, int> count;
int m = 0;
for (i = 0; i<n; i++)
{
count[dic[i]]++;
if (count[dic[i]] * dic[i].length()>m)
{
m = count[dic[i]] * dic[i].length();
}
}
return m;
}
int main()
{
vector<string> v;
int m;
string temp;
while (cin >> m)
{
for (int i = 0; i<m; i++)
{
cin >> temp;
v.push_back(temp);
}
cout << findAlphaMatrix(v, m) << endl;
v.clear();
}
return 0;
}
不懂的可以加我的QQ群:261035036(IT程序员面试宝典
群) 欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~