トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.224 文字列変更(easy)
■■■問題■■■
長さnの2つの文字列S, Tが与えられます。文字列を構成する各文字は、'a'〜'z'です。
今、Sに以下の操作を順次実施してTに変換したいです。
そのような一連の操作のうち、操作回数の最小となるものについて、
その最小値を出力するプログラムを書いて下さい。
(操作)
Sの中から文字S[i]を1個選んで、その文字を'a'〜'z'のいずれかの好きな文字に変更します
■■■入力■■■
n
S
T
1行目に文字列S, Tの長さを表す整数nで与えられます。
続く2行目、3行目には、文字列S, Tがそれぞれ与えられます。
1 <= n <= 1000
S, Tは、'a'〜'z'から構成される文字列です
■■■出力■■■
答えを1行に出力してください。
C#のソース
using System;
using System.Collections.Generic;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("7");
WillReturn.Add("aaabbcc");
WillReturn.Add("aabbccc");
//2
//まず、3文字目を'a' -> 'b'と変更すると、
//aaabbcc -> aabbbcc
//次に、6文字目を'b' -> 'c'と変更すると、
//aabbbcc -> aabbccc
}
else if (InputPattern == "Input2") {
WillReturn.Add("5");
WillReturn.Add("abcde");
WillReturn.Add("abcde");
//0
//操作を行う必要がないため、0を出力します。
}
else if (InputPattern == "Input3") {
WillReturn.Add("8");
WillReturn.Add("hidamari");
WillReturn.Add("yunocchi");
//7
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string S = InputList[1];
string T = InputList[2];
int Cost = 0;
for (int I = 0; I <= S.Length - 1; I++) {
if (S[I] != T[I]) Cost++;
}
Console.WriteLine(Cost);
}
}
解説
ナイーブに1文字ずつ比較してます。