zoukankan      html  css  js  c++  java
  • 机器翻译

     原题链接: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 }
  • 相关阅读:
    花匠
    积木
    Hello world
    老鼠走迷宫全部路径
    今天下午选做题目
    整数高精度运算——加法
    博客启航
    解线性不定方程
    关于完全背包问题
    关于最小代价子母树
  • 原文地址:https://www.cnblogs.com/OIerShawnZhou/p/7496891.html
Copyright © 2011-2022 走看看