码迷,mamicode.com
首页 > 其他好文 > 详细

机器翻译

时间:2020-09-24 21:25:32      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:int   长度   lazy   names   out   return   初始化   初始   struct   

技术图片

技术图片

 

代码如下

#include<iostream>
using namespace std;

const int MAXN = 1000 + 5;
struct Node                     // 进去一个出去一个,很明显,队列 
{
    int num;                    // 保存进去的数字 
};
struct Node queue[MAXN];        
bool vis[MAXN];                    // 标记数组,用来记录 队内 是否有该数字 
int word[MAXN];                    // 输入数组 

int main()
{
    int m, n, cnt = 0;            // 队列长度   数字长度   计数器 
    cin >> m >> n;
    
    int head = 0, tail = 1;            // 初始化 
    for(int i = 1; i <= n; i++)        // 开始整活儿 
    {
        
        cin >> word[i];            
        if(vis[word[i]] == 0)        // 判断 队内 是否有该数字,如果没有进行接下来操作 
        {
            if(tail > m)            // 判断 队列 是否装满,  
            {
                head++;                // 如果装满, 移动队首 
                vis[queue[head].num] = false;    // 剔除 队首 
                
            }
            queue[tail].num = word[i];        // 将输入的数字 入队 
            vis[word[i]] = true;            // 标记该数字已在 队列中 
            cnt++;                            //    计数器 +1 
            tail++;                            // 移动 队尾 
        }
    }
    
    cout << cnt << endl;            // 完活儿 
    
    return 0;            // *注意:如果该队列已经含有将要再进行判断的数字 
                        //        那么该数字不会入队
                        //  例如:队内为 1 2 3 ,判断 1 , 结束后队列依然为 1 2 3 
}

 

机器翻译

标签:int   长度   lazy   names   out   return   初始化   初始   struct   

原文地址:https://www.cnblogs.com/go-alltheway/p/13720065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!