p1279 字串距離
一看就是字串dp,然而並不會,騙分之後爆零了。以後dp題要好好想想轉移方程。f[i][j]表示是a串選了前i個字元,b串選了前j個字元的距離。顯然(qaq)
f[i][j]=min(min(f[i-1][j]+k,f[i][j-1]+k),f[i-1][j-1]+abs(a[i]-b[j]));
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11
#define inf 2147483647
12#define for(i,a,b) for(register int i=a;i<=b;i++)
13#define p(a) putchar(a)
14#define g() getchar()
15//
by war
16//
2017.10.25
17using
namespace
std;
18char a[2010],b[2010
];19
intl1,l2;
20int f[2010][2010
];21
intk;
2223
void
in(int &x)
2433
while(c<='
9'&&c>='
0')x=x*10+c-'
0',c=g();
34 x*=y;35}
36void o(int
x)37
43if(x>9)o(x/10
);44 p(x%10+'0'
);45}46
intmain()
47
P1279 字串距離
設有字串x,我們稱在x的頭尾及中間插入任意多個空格後構成的新字串為x的擴充套件串,如字串x為 abcbcd 則字串 abcb cd a bcbcd 和 abcb cd 都是x的擴充套件串,這裡 代表空格字元。如果a1是字串a的擴充套件串,b1是字串b的擴充套件串,a1與b1具有相同的長度,那麼我捫定...
P1279 字串距離
轉移方程還是很容易想到 dp i,j min dp i 1 j 1 abs min dp i,j 1 dp i 1,j 1 但是我寫完之後發現答案就是不對 看完別人的code之後 才發現還要初始化!因為這個dp我們是對後面的字元進行操作 沒有包含到在第乙個字串前加入很多個空格 include inc...
洛谷 P1279 字串距離
設有字串x,我們稱在x的頭尾及中間插入任意多個空格後構成的新字串為x的擴充套件串,如字串x為 abcbcd 則字串 abcb cd a bcbcd 和 abcb cd 都是x的擴充套件串,這裡 代表空格字元。如果a1是字串a的擴充套件串,b1是字串b的擴充套件串,a1與b1具有相同的長度,那麼我捫定...