田忌赛马:
田忌与齐威王赛马,采用最好马对阵最差马的技巧赢得了齐威王,齐威王不高兴,改了规则,要求田忌出战的马的等级必须和自己的一样,如,齐王上第一块马,则田忌也要上第一快马。
现各有n匹马,输入两个数组,分别表示齐威王和田忌每匹马的速度值,要求田忌的马速度排名必须与齐威王的一致,输出田忌的马的出场顺序。
#include<iostream>
#include<map>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int T = 0;//数据组数
cin >> T;
while (T--)
{
int N = 0;//N匹马
cin >> N;
vector<int> QWW(N);
vector<int> TJ(N);
for (int i = 0; i < N; i++)
{
cin >> QWW[i];
}
for (int i = 0; i < N; i++)
{
cin >> TJ[i];
}
vector<int> TJs(TJ);
vector<int> QWWs(QWW);
sort(TJs.begin(), TJs.end());
sort(QWWs.begin(), QWWs.end());
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (QWW[i] == QWWs[j])
{
QWW[i] = j;
}
if (TJ[i] == TJs[j])
{
TJ[i] = j;
}
}
}
vector<int> ans(N);
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (QWW[i] == TJ[j])
{
ans[i] = j;
break;
}
}
}
for (int i = 0; i < N; i++)
{
if (i == 0)
cout << ans[i] + 1;
else
cout << ' ' << ans[i] + 1;
}
cout << endl;
}
return 0;
}