用STL的题解
2025-05-19 20:03:18
发布于:北京
5阅读
0回复
0点赞
这道题狗TM都会
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
queue<int> q;
long long k;
cin>>k;
for(int i=1;i<=n;i++){
int x;
cin>>x;
q.push(x);
}
int p1=q.front();
q.pop();
int cnt=0;
while(cnt<=k){
int p2=q.front();//①
if(p1>p2){
cnt++;
q.push(p2);//②
q.pop();//②
}
else{
cnt=0;
q.push(p1);//③
p1=p2;//③
q.pop();//③
}
}
cout<<p1;
return 0;
}
①:为什么q2的定义要放在里面? 因为p1是第一个,p1定义完后q.pop()了,p2成为队首,第一轮结束后可能产生新队首,所以要放在里面。
②:这里可能想象力不好的就看不懂了,用样例1仔细列一下:
第二轮:
2 1 p1:2 p2:1
2比1大,q.push(p2);,变成:
2 1 2 p1:2 p2:1
q.pop();,变成:
2 1 p1:2 p2:1
③:这里可能想象力不好的就看不懂了,用样例1仔细列一下:
第一轮:
1 2 p1:1 p2:2
2比1大,q.push(p1);,变成:
1 2 1 p1:1 p2:2
p1=p2;,变成:
1 2 1 p1:2 p2:2
q.pop();,变成:
2 1 p1:2 p2:2
懂了吗,懂了评论区扣1,不懂扣亽暨齑髻尐
全部评论 1
1
2025-05-19 来自 北京
0
有帮助,赞一个