原题链接
思路:
这是一到很简单的题,根据题目中说的“假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。”就很容易想到这是队列,然后有涉及到遍历数据,所以我选择deque;
0.在输入N个非负整数num时,每输一个num,就遍历队列arr检查是否是“新单词”,不是就按照题目规定插入队列末尾;
1.记录存入数据的次数,输出;
int main() {
int m, n;
sfd(m);
sfd(n);
deque<int> arr;
int len, num, cnt = 0;
while( n-- ) {
sfd(num);
len = arr.size();
int i;
for( i=0; i<len; i++ ) {
if( num==arr[i] ) {
break;
}
}
if( i>=len ) {
if( len<m ) {
arr.push_back(num);
}else {
arr.pop_front();
arr.push_back(num);
}
cnt++;
}
}
// for( int i=0; i<arr.size(); i++ ) {
// pfd(arr[i]);
// pfk;
// }
pfd(cnt);
return 0;
}