此題目要計算漂亮度,根據題意,漂亮度要盡可能的大,而且每個字母的漂亮度不同,範圍是[1,26],那麼怎麼分配者[1,26]的權重能使最後的值最大呢?把出現次數多的給權重大就解決了唄!
舉個例子:
zhangsan字母a
ghns
z次數21
1211
很顯然a和n都出現兩次其他出現一次,那最後的綜合就是sum=2*26+2*25+24+23+22+21=192
那整體思路就變成了
(1)統計字母出現次數
(2)將出現次數從大到小排序
(3)將排序好的出現次數乘以26,25,24…依次減小
**如下
#include
#include
#include
using
namespace
std;
bool sortby(int a, int b)
else
}int main()
else
if (instr[j] >= 'a'&&instr[j] <= 'z')//大寫字母
else
//非法
}sort(trans, trans + 26, sortby);
for (int k = 0; k<26 && trans[k] != 0; k++)
cout
<< sum << endl;
memset(trans, 0, sizeof(int)* 26);
}return
0;}
結論:對於字母的計數用乙個長度為26的陣列,這種方法很常用。 華為OJ 名字的漂亮度
描述 給出乙個名字,該名字有26個字串組成,定義這個字串的 漂亮度 是其所有字母 漂亮度 的總和。每個字母都有乙個 漂亮度 範圍在1到26之間。沒有任何兩個字母擁有相同的 漂亮度 字母忽略大小寫。給出多個名字,計算每個名字最大可能的 漂亮度 知識點 字串 執行時間限制 0m 記憶體限制 0 輸入 整...
華為OJ 名字的漂亮度
名字的漂亮度 給出乙個名字,該名字有26 個字串組成,定義這個字串的 漂亮度 是其所有字母 漂亮度 的總和。每個字母都有乙個 漂亮度 範圍在1到 26之間。沒有任何兩個字母擁有相同的 漂亮度 字母忽略大小寫。給出多個名字,計算每個名字最大可能的 漂亮度 輸入描述 整數n,後續 n個名字 輸出描述 每...
華為 OJ 名字的漂亮度
給出乙個名字,該名字有26個字串組成,定義這個字串的 漂亮度 是其所有字母 漂亮度 的總和。每個字母都有乙個 漂亮度 範圍在1到26之間。沒有任何兩個字母擁有相同的 漂亮度 字母忽略大小寫。給出多個名字,計算每個名字最大可能的 漂亮度 輸入描述 整數n,後續n個名字 輸出描述 每個名稱可能的最大漂亮...