题目概括
给定 N 个整数,和一个容量为 M 的“字典”,从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进入的。
做题思路
定义一个长度为 M 的字典数组,依次遍历 N 个数,每次翻译先检索字典数组,没有的话加入字典并ans++,当字典满了,就 a[tower % M + 1] = 当前数字。
CODE
90分(第二个测试点WA):
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int tower = 0, ans = 0;
int m, n;
cin >> m >> n;
for (int i = 1; i <= n; i++) {
bool flag = 0;
int x;
cin >> x;
for (int j = 1; j <= m; j++) {
if (a[j] == x){
flag = 1;
}
}
if (!flag) {
a[tower % m + 1] = x;
tower++;
ans++;
}
}
cout << ans << endl;
return 0;
}
下载数据后发现这个测试点有零,改了一下就AC了。
AC CODE:
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
memset(a, -1, sizeof(a));
int tower = 0, ans = 0;
int m, n;
cin >> m >> n;
for (int i = 1; i <= n; i++) {
bool flag = 0;
int x;
cin >> x;
for (int j = 1; j <= m; j++) {
if (a[j] == x){
flag = 1;
}
}
if (!flag) {
a[tower % m + 1] = x;
tower++;
ans++;
}
}
cout << ans << endl;
return 0;
}
标签:翻译,测试点,NOIP2010,int,题解,机器翻译,ans,tower,字典
From: https://www.cnblogs.com/yang-guang-hao-AKIOI/p/18367271