标签:应该 stream col span 找不到 name 长度 efi 链接
原题链接:https://www.luogu.org/problem/show?pid=1540#sub
再顺手切掉一道大水题。
内存池实际上可以看作一个长度为M的队列,手写就好。
用一个find函数遍历内存池,如果找到曾经存过的单词就返回true,否则返回false。
内存池内所有元素初始化为-1,这点很关键。
然后每次输入单词,都去内存池find这个单词,如果找不到,那就应该把这个单词加进去,如果队列满了,那就把队首指针再拨回1即可(即循环队列)。
最后输出ans。
1 #include <iostream> 2 #define maxn 10005 3 using namespace std; 4 int n,m,a[maxn]; 5 int k=1,ans,word; 6 bool find(int x){ 7 bool b = false; 8 for (int i=1;i<=m;i++) 9 if (a[i] == x){ 10 b = true; 11 break; 12 } 13 return b; 14 } 15 16 int main(){ 17 cin >> m >> n; 18 for (int i=1;i<=m;i++) 19 a[i] = -1; 20 for (int i=1;i<=n;i++){ 21 cin >> word; 22 if (!find(word)){ 23 a[k] = word; 24 k++; 25 ans++; 26 } 27 if (k>m) 28 k = 1; 29 } 30 cout << ans << endl; 31 return 0; 32 }
标签:应该 stream col span 找不到 name 长度 efi 链接
原文地址:http://www.cnblogs.com/OIerShawnZhou/p/7496891.html