codeforces 187A

【题意描述】

给定两个有n个整数构成的序列,我们每次可以移动第一个序列的最后一个数,并可以把该数插在第一位或者中间某一个位置。求通过最少的步骤数使得第一个序列与第二个序列相同。

【解题思路】

本题采用贪心的思想。我们可以从第一个开始找,寻找不需要处理的序列数,然后用总长度减去不需要处理的数目即是答案。

【AC代码】

 1 #include <iostream>
 2 #include <cstring>
 3 
 4 #define maxn 200000+10
 5 
 6 using namespace std;
 7 
 8 int n;
 9 int a[maxn],b[maxn];
10 int visit[maxn];
11 int main (){
12 while (cin>>n){
13 int flag,temp;
14 int ans=maxn;
15 memset (visit,0,sizeof visit);
16 for (int i=0;i<n;i++){
17 cin>>a[i];
18 }
19 a[n]=0;
20 for (int i=0;i<n;i++){
21 cin>>b[i];
22 }
23 int j=0;
24 ans=0;
25 
26  
27 
28 //求不用处理的元素个数
29 for (int i=0;i<n;i++){
30 if (a[j]!=b[i])
31 continue ;
32 j++;
33 ans++;
34 }
35 cout<<n-ans<<endl;
36 }
37 return 0;
38 }
原文地址:https://www.cnblogs.com/khbcsu/p/3890388.html