可以说哈,就是那栈来模拟的,不复杂,一个库就可以了。
M[]是内存,S[]是外存,T[]是文章,a是查了几次,b是判定是否在内存里而不需要查找外存的一个数。
代码如下:
#include <stdio.h>
using namespace std;
int M[201], S[1001], T[1102], a, b;
int main() {
int n, m, head = 0, tail = 0;
scanf("%d %d", &m, &n);
for (int i = 0; i < 1000; i++)
S[i] = i + 1;
for (int i = 0; i < n; i++)
scanf("%d", &T[i]);
for (int i = 0; i < n; i++) {
b = 0;
for (int j = head; j < tail; j++) {
if (M[j] == T[i]) {
b = 1;
break;
}
}
if (b == 1)
continue;
S[T[i]] == 0;
if (tail - head == m)
head++;
M[tail] = T[i];
tail++;
a++;
}
printf("%d", a);
return 0;
}