白駿1120号:文字列
5193 ワード
リンク:https://www.acmicpc.net/problem/1120
なんてことだ.イヤホンを持っていません.しかし、私は屈服しません.今日はすぐにあなたに近づきます.
長さは等しく、文字列の違いを知る必要があります.2つの文字列XとYの違いは
Aの長さはBの長さ以下であるため、Bの長さが長ければAとの差を減算する.->邪族になる.
AとBの長さが異なる場合は、演算前後でAにアルファベットを追加できます.もちろんやるべきことはBと同じだ邪族になる.
実は貪欲な探求で行うこともできます.いずれにしても前後にアルファベットを貼って、なるべくBに貼って、真ん中は変わらないので、真ん中の差が一番小さいところを見つけるのが一番簡単な方法です.
問題を読む
なんてことだ.イヤホンを持っていません.しかし、私は屈服しません.今日はすぐにあなたに近づきます.
長さは等しく、文字列の違いを知る必要があります.2つの文字列XとYの違いは
X[i]≠Y[i]
のiの個数であるため、インデックスでのアクセスがより速くなる可能性がある.アレイまたはベクトル.ここでAとBの長さはせいぜい50なので、並べて近づけるのも難しくありません.ゲートを通る探索が正しいからです.Aの長さはBの長さ以下であるため、Bの長さが長ければAとの差を減算する.->邪族になる.
AとBの長さが異なる場合は、演算前後でAにアルファベットを追加できます.もちろんやるべきことはBと同じだ邪族になる.
コード#コード#
#include<iostream>
#include<string>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string A, B;
cin >> A >> B;
int Asz = A.size();
int Bsz = B.size();
int wrong = Bsz;
//A와 B의 길이는 같은 상태
for (int i = 0; i <= (Bsz-Asz); i++) {
int tmp = 0;
for (int j = 0; j < Asz; j++) {
if (A[j] != B[i + j])
tmp++;
}
wrong = (tmp > wrong) ? wrong : tmp;
}
cout << (wrong);
return 0;
}
ぶんせき
実は貪欲な探求で行うこともできます.いずれにしても前後にアルファベットを貼って、なるべくBに貼って、真ん中は変わらないので、真ん中の差が一番小さいところを見つけるのが一番簡単な方法です.
Reference
この問題について(白駿1120号:文字列), 我々は、より多くの情報をここで見つけました https://velog.io/@ntbij29/백준-1120번-문자열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol