首页 > 代码库 > codeforces 187A

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 }