五一训练礼包—FindCard
I-FindCard
Content
· 题目回溯
· 题目分析
· 可行代码
(一)题目回溯
DISCRIPTION
INPUT
OUTPUT
EXAMPILE
NOTE
(二)题目分析
1. 找出 ti 在数组中的位置,并记录
2. 将 ti 前的所有数字往后移动一位
3. 重复步骤1、2直到找完所有数字
(三)可行代码
#include <iostream> using namespace std; int main() { int n, q; cin >> n >> q; int cards[n], queries[q], position[q]; for (int i = 0; i < n; i++) cin >> cards[i]; for (int i = 0; i < q; i++) cin >> queries[i]; for (int i = 0; i < q; i++) { for (int j = 0; j < n; j++) if (cards[j] == queries[i]) { position[i] = j; break; } int temp = cards[position[i]]; for (int j = position[i]; j > 0; j--) cards[j] = cards[j - 1]; cards[0] = temp; } for (int i = 0; i < q; i++) { cout << position[i] + 1; if (i < q - 1) cout << ' '; } return 0; }