思路:
大概思想如下:
1. 動態規劃求解,構造dp 二維陣列;
2. 設dp[i][j], i 為 第乙個字串的第i個字母;j 為 第二個字串的第j個字母
3. dp[i][j] 如果為 1 ,表示 s1[i] 等於 s3[i+j] 且 dp[i−1][j] 等於 1,同理s2
4. 簡單的說 dp[i][j] 為 1 就表示這個點可達,以 dp[0][0] 為起點, dp[len1][len2] 為終點,dp陣列中值為 1 的點為路徑,向下走表示取 s1 的字元,向右走表示取 s2 的字元。這樣就將抽象的字元組合轉化成了更好理解的二維陣列來表示;
5. 最優子結構即為: s1,s2 的 i,j 點字元之前的字元能否交叉組合成字串 s3 的前 i+j 個字元,轉換到二維陣列即為,i,j 點左側點和上方的點是否可達。
privatestatic
string solution(string line)
for (int i = 1; i <= len1; i++)
for (int i = 1; i <= len0; i++)
}if (dp[len0][len1] == 1)
return
true + "";
return
false + "";
}
小公尺OJ 6(交叉佇列)
交叉佇列 序號 6 難度 有挑戰 時間限制 1000ms 記憶體限制 10m描述 給出三個佇列 s1,s2,s3 判斷 s3 是否是由 s1 和 s2 交叉得來。如 s1 為 aabcc s2 為 dbbca。當 s3 為 aadbbcbcac 時,返回 true 即將 s1 拆成三部分 aa,bc...
小公尺OJ 6 交叉佇列
將題目可以轉換成尋找一條路徑。走過s1或s2時,不能跳過或回頭,只能沿著當前字串前進或者跳到另乙個字串上一次走到的位置。利用dp i j 記錄路徑,i表示走到s1的當前位置,j表示走到s2的當前位置,dp i j 表示當前路徑是否等於與s3截止到 i j 的相等。include using name...
南陽理工oj6題
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入 第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝...