标签: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