@[coder_1746](/user/682471) 核心是这么扫的
```cpp
for (i = n; i >= 2; i--)
for (j = 1; j <= i - 1; j++)
if (a[j] > a[j + 1]) {
swap(a[j], a[j + 1]);
ans++;
}
```
附详解[冒泡排序动态](https://visualgo.net/zh/sorting)
###### ~~哇是什么?~~
by __er @ 2022-07-01 15:13:27
```
for(int j=0;j<n;j++){
if(A[j]>A[i]) sum++;
}
```
$\to$
```
for(int j=0;j<i;j++){
if(A[j]>A[i]) sum++;
}
```
by 迟暮天复明 @ 2022-07-01 15:13:40
@[coder_1746](/user/682471) 我swap了,本题可以不swap
by __er @ 2022-07-01 15:14:28
@[YMXX](/user/713955) 感谢神犇!
~~哇就是WA~~
by coder_1746 @ 2022-07-01 15:15:29
@[迟暮天复明](/user/222865) ok感谢大佬!
by coder_1746 @ 2022-07-01 15:16:09
@[coder_1746](/user/682471) 啊,大草
by __er @ 2022-07-01 15:22:11
第八行改i<j
ac等你
by SHU_YSY @ 2022-07-08 15:25:04
```cpp
#include <bits/stdc++.h>
using namespace std;
stack<int>q;//栈q
vector<int>a,b;//队列a,b
int p,n;//n是序列长度
int main(int argc, char** argv) {
cin>>n;
int sum=0;
for(int i=1; i<=n; i++) {//读入数据
a.push_back(i);
}
//储存目标出栈顺序
for(int i=0; i<n; i++) {
int t;
cin>>t;
b.push_back(t);
}
//尝试是否存在指定的出栈顺序
for(int i=0; i<n; i++) {
q.push(a[i]);//入栈
//当栈顶元素与b中当前元素相同时出栈
while(!q.empty()&&(q.top())==b[sum]) {
q.pop();//尝试出栈
sum++;//sum到b下一个元素
}
}
if(q.empty()) {//如果栈为空说明出栈序列b正确
cout<<"YES"<<endl;
} else {
cout<<"NO"<<endl;
}
return 0;
}
```
by lixuhui20120805 @ 2022-08-08 17:23:12