2012-12-26 21:39:01Morris
[UVA] 12583 - Memory Overflow
題目意思:
這個人只能記住前 k 天的人,而他每天只會遇到一個人,
如果不認識的話,他會把他記住,但是在 k 天後遺忘,
如果再次遇到的話,就在延長時間。
問 他有幾天可以認識到他認識的人。
// 英文原題就不方便複製了
#include <stdio.h>
int main() {
int t, cases = 0, n, k;
char d[505];
scanf("%d", &t);
while(t--) {
scanf("%d %d", &n, &k);
scanf("%s", d);
int r[26] = {}, cnt = 0, i;
for(i = 0; i < 26; i++)
r[i] = -0xfff;
for(i = 0; i < n; i++) {
if(i-r[d[i]-'A'] <= k)
cnt++;
r[d[i]-'A'] = i;
}
printf("Case %d: %d\n", ++cases, cnt);
}
return 0;
}
這個人只能記住前 k 天的人,而他每天只會遇到一個人,
如果不認識的話,他會把他記住,但是在 k 天後遺忘,
如果再次遇到的話,就在延長時間。
問 他有幾天可以認識到他認識的人。
// 英文原題就不方便複製了
#include <stdio.h>
int main() {
int t, cases = 0, n, k;
char d[505];
scanf("%d", &t);
while(t--) {
scanf("%d %d", &n, &k);
scanf("%s", d);
int r[26] = {}, cnt = 0, i;
for(i = 0; i < 26; i++)
r[i] = -0xfff;
for(i = 0; i < n; i++) {
if(i-r[d[i]-'A'] <= k)
cnt++;
r[d[i]-'A'] = i;
}
printf("Case %d: %d\n", ++cases, cnt);
}
return 0;
}