题目大意:报社根据文章中不同字符的价值付费给作者,给出字符的价值,计算一篇文章应付多少钱给作者。
先统计文章中每个字符出现的次数,再计算价值。直接寻址表(Direct Addressing Table, DAT)的应用。
1 #include <cstdio> 2 #include <cstring> 3 #define MAXN 256+4 4 #define LINEN 10000+10 5 6 int cnt[MAXN], value[MAXN]; 7 8 int main() 9 { 10 #ifdef LOCAL 11 freopen("in", "r", stdin); 12 #endif 13 int T; 14 scanf("%d", &T); 15 while (T--) 16 { 17 int k; 18 scanf("%d", &k); 19 getchar(); 20 memset(value, 0, sizeof(value)); 21 while (k--) 22 { 23 char ch; 24 int v; 25 scanf("%c%d", &ch, &v); 26 getchar(); 27 value[ch] = v; 28 } 29 int m; 30 scanf("%d", &m); 31 getchar(); 32 char str[LINEN]; 33 memset(cnt, 0, sizeof(cnt)); 34 while (m--) 35 { 36 gets(str); 37 int len = strlen(str); 38 for (int i = 0; i < len; i++) 39 cnt[str[i]]++; 40 } 41 int money = 0; 42 for (int i = 0; i <= 255; i++) 43 money += cnt[i]*value[i]; 44 int dollar = money / 100; 45 int cent = money % 100; 46 printf("%d.%02d$ ", dollar, cent); 47 } 48 return 0; 49 }