51 Nod1182完美字串

2021-08-02 03:08:27 字數 996 閱讀 4582

1182 完美字串

約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1-26之間的整數。

約翰不在乎字母大小寫。(也就是說字母f和f)的完美度相同。給定乙個字串,輸出它的最大可能的完美度。例如:dad,你可以將26分配給d,25分配給a,這樣整個字串完美度為77。

input

輸入乙個字串s(s的長度 <= 10000),s中沒有除字母外的其他字元。
output

由你將1-26分配給不同的字母,使得字串s的完美度最大,輸出這個完美度。
input示例

dad
output示例

77

c++的執行時限為:1000 ms ,空間限制為:131072

題意:給定乙個字串,你可以給任意字母規定價值(1-26),求最大價值。

解析:這個題目是個很水的貪心。先統計各個字母的個數,然後再排序,依次從最**值(26)與最大個數的積往下算和即可得出最優解。以下是我的**

#include #include #include int cmp(const void*a,const void*b)

int main()

; char arr[10005];

gets(arr);

for(int i=0;i='a'&&arr[i]<='z') letter[arr[i]-'a']++;

else letter[arr[i]-'a']++;

}qsort(letter,26,sizeof(int),cmp);

long long sum=0;

for(int i=26,j=0;i>=1;i--,j++)

sum+=i*letter[j];

printf("%lld\n",sum);

return 0;

}

真的是相當水的乙個題。

51nod1182 完美字串

題意 給定乙個字串,然後可以隨意分配每個字元1 26的完美度,問最大完美度是多少。思路 貪心,開始太疏忽,沒有想到貪心,因為26肯定是分配給出現次數最多的那個,其他依次遞減。我用乙個陣列儲存每個字元出現的次數,然後在從大到小排序就行。include include include includeus...

51nod1182 完美字串

約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1 26之間的整數。約翰不在乎字母大小寫。也就是說字母f和f 的完美度相同。給定乙個字串,輸出它的最大可能的完美度。例如 dad,你可以將26分配給d,25分配給a,這樣整個字串完美...

51 nod 1182 完美字串

1182 完美字串 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1 26之間的整數。約翰不在乎字母大小寫。也就是說字母f和f 的完美度相同。給定...