hihocoder 1264 神奇字串 (列舉+模擬)
時間限制:20000ms
單點時限:1000ms
記憶體限制:256MB
描述
我們說兩個字串是非常相似的,當且僅當它們的編輯距離小於等於1.
現在我們有兩個字串A和B, 每個單位時間你可以交換字串A的相鄰的兩個字元.
問最少需要多少時間,你可以讓A和B變得非常相似?保證存在一種這樣的方案.
輸入
第一行一個字串,表示A.
第二行一個字串,表示B.
所有字串都僅有英文小寫字母組成.
A和B的長度都不超過100.
輸出
一行表示最少需要的時間.
nwlrb
rclwnb
樣例輸出
6
題目連結:http://hihocoder.com/problemset/problem/1264
題目分析:編輯距離就是增刪該的次數資料範圍很小,對B列舉進行增刪改的操作得到C,然後在A中找C對應位置的字元,然後交換記錄次數
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const INF = 0x3fffffff;
char a[105], b[105], c[105], aa[105];
int lena, lenb;
int cal()
{
memcpy(a, aa, sizeof(aa));
int res = 0;
int len = strlen(c);
if(len != lena)
return INF;
int i = 0, j = 0;
while(j != len)
{
int edi = -1;
for(int ii = i; ii < lena; ii++)
{
if(a[ii] == c[j])
{
edi = ii;
break;
}
}
if(edi == -1)
return INF;
for(int k = edi; k > i; k--)
{
swap(a[k], a[k - 1]);
res ++;
}
i ++;
j ++;
}
return res;
}
int main()
{
int ans = 100000;
scanf("%s %s", a, b);
memcpy(aa, a, sizeof(a));
lena = strlen(a);
lenb = strlen(b);
if(strcmp(a, b) == 0)
printf("0\n");
else
{
//增
for(int i = 0; i <= lenb; i++)
{
for(char j = 'a'; j <= 'z'; j++)
{
memcpy(c, b, sizeof(b));
for(int k = lenb; k > i; k--)
c[k] = c[k - 1];
c[i] = j;
ans = min(ans, cal());
}
}
//改
memcpy(c, b, sizeof(b));
for(int i = 0; i < lenb; i++)
{
for(char j = 'a'; j <= 'z'; j++)
{
char tmp = c[i];
c[i] = j;
ans = min(ans, cal());
c[i] = tmp;
}
}
//刪
for(int i = 0; i < lenb; i++)
{
memcpy(c, b, sizeof(b));
for(int k = i; k < lenb - 1; k++)
c[k] = c[k + 1];
c[lenb - 1] = '\0';
ans = min(ans, cal());
}
printf("%d\n", ans);
}
}
相關文章
- hihocoder 1039 字元消除 (列舉+模擬)字元
- js模擬實現列舉效果JS
- 列舉範圍內的字串字串
- OC中列舉寫法 以及 字串型別列舉實現探索字串型別
- 垂直柱狀圖(模擬+字串)字串
- YT15-HDU-字串的模擬字串
- elixir模擬ruby快速複製字串字串
- .NET 下 模擬陣列越界陣列
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- 陣列模擬單連結串列陣列
- 模擬實現字串函式strlen , strcpy ,strcmp字串函式
- Java 列舉、JPA 和 PostgreSQL 列舉JavaSQL
- POJ 2259 Team Queue【模擬佇列】佇列
- 列舉和列舉的取值範圍
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 模擬退火演算法舉例及其matlab實現演算法Matlab
- 1284 海港 普及組 NOIP2016 佇列基礎 簡單列舉 簡單模擬 優先佇列(priority_queue)佇列
- 微軟2016校園招聘4月線上筆試 hihocoder 1288 Font Size (模擬)微軟筆試
- 基數排序--陣列模擬桶結構排序陣列
- [NOIP 2024 模擬2]陣列操作陣列
- Java列舉Java
- Swift,列舉Swift
- 模擬銀行排隊時間—4佇列佇列
- 陣列模擬雙連結串列,你get到了嗎?陣列
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- C# 列舉與位列舉概述C#
- [Offer收割]程式設計練習賽2 hihocoder 1275 掃地機器人 (計算幾何+模擬 比較煩)程式設計機器人
- hihocoder 1257 Snake Carpet 模擬構造題||2015北京現場賽I題
- 列舉工具類
- TypeScript 列舉enumTypeScript
- Java 列舉(enum)Java
- Swift-列舉Swift
- 自定義列舉
- java列舉類Java
- TypeScript 列舉指南TypeScript
- Java列舉使用Java
- C#:列舉C#
- 列舉程式 (轉)