LeetCode 1255 得分最高的单词集合 Maximum Score Words Formed by Letters
地址 https://leetcode-cn.com/problems/maximum-score-words-formed-by-letters/
题目描述
你将会得到一份单词表 words,一个字母表 letters (可能会有重复字母),以及每个字母对应的得分情况表 score。
请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能够由 letters 里的字母拼写出的 任意 属于 words 单词子集中,分数最高的单词集合的得分。
单词拼写游戏的规则概述如下:
玩家需要用字母表 letters 里的字母来拼写单词表 words 中的单词。
可以只使用字母表 letters 中的部分字母,但是每个字母最多被使用一次。
单词表 words 中每个单词只能计分(使用)一次。
根据字母得分情况表score,字母 ‘a’, ‘b’, ‘c’, … , ‘z’ 对应的得分分别为 score[0], score[1], …, score[25]。
本场游戏的「得分」是指:玩家所拼写出的单词集合里包含的所有字母的得分之和。
样例
示例 : 输入:words = ["dog","cat","dad","good"], letters = ["a","a","c","d","d","d","g","o","o"],
score = [,,,,,,,,,,,,,,,,,,,,,,,,,]
输出:
解释:
字母得分为 a=, c=, d=, g=, o=
使用给定的字母表 letters,我们可以拼写单词 "dad" (++)和 "good" (+++),得分为 。
而单词 "dad" 和 "dog" 只能得到 分。
示例 : 输入:words = ["xxxz","ax","bx","cx"], letters = ["z","a","b","c","x","x","x"],
score = [,,,,,,,,,,,,,,,,,,,,,,,,,]
输出:
解释:
字母得分为 a=, b=, c=, x=, z=
使用给定的字母表 letters,我们可以组成单词 "ax" (+), "bx" (+) 和 "cx" (+) ,总得分为 。
单词 "xxxz" 的得分仅为 。
示例 : 输入:words = ["leetcode"], letters = ["l","e","t","c","o","d"],
score = [,,,,,,,,,,,,,,,,,,,,,,,,,]
输出:
解释:
字母 "e" 在字母表 letters 中只出现了一次,所以无法组成单词表 words 中的单词。
提示: <= words.length <=
<= words[i].length <=
<= letters.length <=
letters[i].length ==
score.length ==
<= score[i] <=
words[i] 和 letters[i] 只包含小写的英文字母。
算法1
(暴力枚举)
DFS 暴力枚举 是的 就是暴力
也许出题人是想做动态规划?? 然后降低了数据量么?
class Solution {
public:
int ret = ;
void transferToArr(const vector<string>& words, vector<vector<int>>& wordsArr,
const vector<char>& letters, vector<int>& lettersArr)
{
for (int i = ; i < words.size(); i++) {
vector<int> tmp();
for (int j = ; j < words[i].size(); j++) {
int idx = words[i][j] - 'a';
tmp[idx]++;
}
wordsArr.push_back(tmp);
}
for (int i = ; i < letters.size(); i++) {
int idx = letters[i] - 'a';
lettersArr[idx]++;
}
}
int SelectWord(vector<int> wordCount, vector<int>& lettersArr, vector<int>& score)
{
int retScore = ;
for (int i = ; i < wordCount.size(); i++) {
if (wordCount[i] != ) {
if (wordCount[i] > lettersArr[i])
return ;
lettersArr[i] -= wordCount[i];
retScore += score[i] * wordCount[i];
}
}
return retScore;
}
void DFS(vector<vector<int>>& wordsArr, int idx, vector<int> lettersArr, int currScore, vector<int>& score)
{
if (idx >= wordsArr.size()) {
ret = max(ret, currScore);
return;
}
vector<int> copyLettersArr = lettersArr;
int addscore = SelectWord(wordsArr[idx], lettersArr, score);
if (addscore != )
DFS(wordsArr, idx+, lettersArr, currScore + addscore, score);
//这里尝试的是不放入该单词的组合
DFS(wordsArr, idx + , copyLettersArr, currScore, score);
}
int maxScoreWords(vector<string>& words, vector<char>& letters, vector<int>& score) {
vector<vector<int>> wordsArr;
vector<int> lettersArr();
//将提出给出的变量 转化成字符索引 多少个字符为值得数组
transferToArr(words, wordsArr, letters, lettersArr);
DFS(wordsArr, , lettersArr, , score);
return ret;
}
};
LeetCode 1255 得分最高的单词集合 Maximum Score Words Formed by Letters的更多相关文章
- 【leetcode】1255. Maximum Score Words Formed by Letters
题目如下: Given a list of words, list of single letters (might be repeating) and score of every charact ...
- UVA 12906 Maximum Score 排列组合
Maximum Score Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vie ...
- [LeetCode] Concatenated Words 连接的单词
Given a list of words (without duplicates), please write a program that returns all concatenated wor ...
- java基础(10)---leetcode的String、数组以及集合的一些使用
整数 一.整数反转_7 /* 12345 变成 54321 */ public class 整数反转_7 { public static void main(String[] args){ int x ...
- [LeetCode] Valid Word Square 验证单词平方
Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a v ...
- [LeetCode] Valid Word Abbreviation 验证单词缩写
Given a non-empty string s and an abbreviation abbr, return whether the string matches with the give ...
- [LeetCode] Shortest Word Distance 最短单词距离
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- [LeetCode]题解(python):104 Maximum Depth of Binary Tree
题目来源 https://leetcode.com/problems/maximum-depth-of-binary-tree/ Given a binary tree, find its maxim ...
- [LeetCode] Short Encoding of Words 单词集的短编码
Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...
随机推荐
- C#使用Linq to csv读取.csv文件数据2_处理含有非列名数据的方法(说明信息等)
第一篇博客为:https://www.cnblogs.com/lxhbky/p/11884474.html 本文主要是为了解决上面博客遗留的一个含有不规范数据的一种方法,目前暂时没有从包里发现可以从第 ...
- 用Python6种方法:给定一个不超过5位的正整数,判断有几位
方法一:作比较 a=int(input(">>>>")) if a<10: print(1) elif a<100: #第一个条件已经过滤了大于 ...
- SSM框架之SpringMVC(3)常用注解
SpringMVC(3)常用注解 1. RequestParam注解 1.作用:把请求中指定名称的参数传递给控制器中的形参赋值 2.属性: 1.value:请求参数的每次 2.required ...
- QGIS练手 - 数据
又熬夜了... 这篇博客可能会将QGIS数据管理部分和ArcGIS数据管理进行对比学习. 1. 本地数据文件与数据库(矢量) 1.1 文件 QGIS用的是shp文件.kml文件.geojson文件较多 ...
- mysql在本地已经启动,但是在网页上不能直接访问的解决
1.将mysql文件下的my.ini中的路径代码 # 设置mysql的安装目录 basedir=E:/Develop/mysql # 设置mysql数据库的数据的存放目录 datadir=E:/Dev ...
- IDEA快捷键用法
1.Ctrl+滑动滚轮调节窗口显示大小(需要设置之后方可) File->Settings->Editor->General->Change fontsize with Ctrl ...
- pwn-200
题目连接 https://adworld.xctf.org.cn/media/task/attachments/49bd95c78386423997fa044a9e750015 借鉴 https:// ...
- idea中导入别人的vue项目并运行
1. 下载node.js 在搭建vue的开发环境之前,先下载node.js,下载地址:https://nodejs.org/en/ https://blog.csdn.net/antma/articl ...
- cisco ssh实验--附带配置脚本-2019.11.19
cisco ssh实验
- 解决“var/log/sysstat/sa21: 没有那个文件或目录 请检查是否允许数据收集”
想使用sar查看一些系统的一些活动信息,发现报错.记录一下 使用apt install sysstat后第一次 报错 /var/log/sysstat/sa21: 没有那个文件或目录 请检查是否允许数 ...