第三届全国大学生算法设计与编程挑战赛---F题 String

发布于:2023-01-09 ⋅ 阅读:(429) ⋅ 点赞:(0)

在这里插入图片描述

Description

Makik 在上次的比赛后沉迷原神,现在要向你展示他给史莱姆排队的能力。

具体而言,我们用一个大写字母来表示一种史莱姆,同种史莱姆之间没有区别,这里我们认为共有 26 种不同类型的史莱姆。

Makik 有一个已经排好队的史莱姆序列 B, 现在又给了你一个还没排好队的史莱姆序列 A, 请问最少多少次操作能把 A 排成 B呢?

这个问题太简单了,所以 Makik 加了个限制条件:

每次移动 A 中的史莱姆的时候,只能将想要移动的史莱姆从原来的位置移动到队头,也就是第一个史莱姆的前面。

请问在这个限制下,最少多少次操作可以将 A 排成 B 呢?

Input

第一行一个数字 nnn, 表示史莱姆序列的长度。

接下来一行 nnn 个大写字母组成的字符串,表示史莱姆序列 A。

再接下来一行 nnn 个大些字母组成的字符串,表示史莱姆序列 B。

Output

一行一个数字,表示最少需要的操作次数。

Sample Input 1

10
SIAJOIWUGB
IBUSJGWAOI

Sample Output 1

7

Hint

数据规模与约定
1≤n≤10^6 , 数据保证至少存在一种方法将 AAA 排成 BBB。

代码

#include<stdio.h>
#define Num 1000006
char a[Num],b[Num];

int main(){
	int n;
	scanf("%d",&n);
	scanf("%s",a+1);
	scanf("%s",b+1);
  
	int p=n,q=0;
	for(int j=n;j>=1;--j){
		if(a[j]==b[p]){
			p--;
			q=q+1;
		}
	}
	
	for(int j=200;j>=10;--j){	
	}
	printf("%d\n",n-q);
	return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到