首先贴出自己错误的代码,没兴趣看的同学可以直接跳到下面讲问题的地方。
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int M, N;
vector<int>Vin;
vector<int>Vpre;
map<int, int> MinAddr;//每个关键字在中序中位置
map<int, bool> Mexist;//数字是否出现过
int main()
{
scanf("%d %d", &M, &N);
Vin.resize(N);
Vpre.resize(N);
for (int i = 0; i < N; i++) {
scanf("%d", &Vin[i]);
MinAddr[Vin[i]] = i;
Mexist[Vin[i]] = true;
}
for (int i = 0; i < N; i++)
scanf("%d", &Vpre[i]);
for (int i = 0; i < M; i++) {
int u, v, f