五一训练礼包—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;
}

 

posted @ 2021-05-04 15:01  Kirk~~  阅读(65)  评论(0编辑  收藏  举报