1. 程式人生 > >51nod 1182 完美字符串【字符串排序+哈希】

51nod 1182 完美字符串【字符串排序+哈希】

空間 b- lose 不同的 時間限制 關註 font cout dad

1182 完美字符串技術分享 題目來源: Facebook Hacker Cup選拔 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級算法題 技術分享 收藏 技術分享 關註 約翰認為字符串的完美度等於它裏面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應一個1-26之間的整數。 約翰不在乎字母大小寫。(也就是說字母F和f)的完美度相同。給定一個字符串,輸出它的最大可能的完美度。例如:dad,你可以將26分配給d,25分配給a,這樣整個字符串完美度為77。 Input
輸入一個字符串S(S的長度 <= 10000),S中沒有除字母外的其他字符。
Output
由你將1-26分配給不同的字母,使得字符串S的完美度最大,輸出這個完美度。
Input示例
dad
Output示例
77

【分析】:一般要對每個字符進行操作就不用string,用char字符數組。求最大的某某一般倒序。
【代碼】:
技術分享
#include <bits/stdc++.h>

using namespace std;
#define LL long long
LL n;
int h[30];

int main()
{
   string a;
   cin>>a;

   for(int i=0;i<a.length();i++)
   {
       a[i]
=tolower(a[i]); h[a[i]-a]++; } sort(h,h+27); LL ans=0; for(int i=26;i>=0;i--) { ans+=h[i]*i;//就問你這個i用得妙不妙~ } cout<<ans<<endl; return 0; }
View Code



51nod 1182 完美字符串【字符串排序+哈希】