題目大意:考慮兩個字串右對齊的最佳解法。例如,有乙個右對齊方案中字串是溯溯遤遤遙遦遧遧遨遣和溯遤遣遤遙遧遨。第一行逺溯溯遤 遤遙遦遧遧遨遣第二行逺 溯遤遣遤遙 遧遨每乙個數值匹配的位置值進分,一段連續的空格值逭週分。所以總分是匹配點的進倍減去連續空格的段數,在上述給定的例子中,逶個位置逨遁逬遄逬遄逬遅逬遇逬遈逩 匹配,三段空格,所以得分進逪逶逫逨逭周逩逪逳逽逹,注意,我們並不處罰左邊的不匹配位置。若匹配的位置是兩個不同的字元,則既不得分也不失分。請你寫個程式找出最佳右對齊方案。輸入包含兩行,每行乙個字串,最長逵逰個字元。字元全部是大字字母。輸出一行,為最佳對齊的得分。
狀態設計為:
相同有空格那麼轉移方程為:沒空格:f[i][j] = f[i + 1][j + 1];
如果s1[i] == s2[j - 1] :f[i][j] = max(f[i + 1][j + 1] + 2, f[i][j]);
如果s1前面有連續空格:f[i][j] = max(f[k][j] - 1, f[i][j]);
思路:從右往左掃。
或者翻轉後,從左往右掃
實現第二種:
如果是空格,找到前面乙個不是空格字元,-1
如果兩個字元i,j相等==i-1 j-1的記錄 +2
否則: 判斷給i或者j位置添 空格哪個更大。
#include #include #include #include #include #include using namespace std;
string s,s1,s2;
long f[60][60];
long n,m,max1,max2;
long find_max(long x,long y)
int main()
printf("%ld\n",max2);
return 0;
}
線性dp 區間dp
1 尼克的任務 額一道挺水的題,愣是做了幾個小時 動態規劃大致的思路還是找乙個轉移 換個詞就是影響 我們可以明顯看出本題的規則 空暇時,一遇到任務必須挑乙個接 求1 n時間內最大空暇時間 所以將任務排序是必要的,兩個關鍵字 再來想象一下當我做到第i 個任務時,我在 st i st i t i 1 時...
位元組順序 位元組對齊
一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...
位元組順序 位元組對齊
一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...