2010年3月30日 星期二

Problem 10295 Hay Points,薪資字典

Problem 10295 此題是要算出員工針對工作描述,而算出他的薪資。在描述之前會有一本所謂「薪資字典」的本子,裡面記錄著一些關鍵字,只要提及字典上任何一個關鍵字,就可以取得這個關鍵字的 Hay Points,當然,Hay Points 越高,員工的薪資也越高。

所以在一開始要先記錄它的字典裡的字,再去讀取員工描述。將每個字與字典的字比對後,若有出現,則加上它的 Hay Points;反之,則否。程式如下:
int m, n, i, j, k;
scanf("%d%d", &m, &n);
for (i = 0; i < m ; i ++)
scanf("%s %d", w[i].str, &w[i].point);
for (i = 0; i < n; i ++)
{
int point = 0;
while (gets(str))
{
if (str[0] == '.') break;
int index = 0;
for (j = 0; str[j]; j ++)
{
if (isalpha(str[j]))
word[index ++] = str[j];
if (!isalpha(str[j]) || str[j + 1] == '\0')
{
word[index] = '\0';
for (k = 0; k < m; k ++)
if (strcmp(word, w[k].str) == 0)
{ point += w[k].point; break; }
index = 0;
}
}
}
printf("%d\n", point);

}

而結構宣告如下:
struct word
{
char str[20];
int point;
};

struct word w[1000];
char str[200];
char word[20];

By David.K

p10295題目連結
回ACM題庫目錄
回首頁

沒有留言: