一道簡單題,想的不到位,做了好久···呵呵一下自己的poor能力···
問題出在f函式中注釋部分
想當然認為短的去匹配長的串···
然而反例是
長的匹配短的結果是7
短的匹配長得結果是8
注釋掉後就對了···
之前主函式中交換是因為考慮到了如下情況
如果不交換輸出6 交換後輸出5
剩下的就是f函式中for的實現了
思路是逐位匹配,如果匹配不了就返回到原來位置+1的地方繼續匹配知道 迴圈終止 繼而判斷迴圈因何終止 可得最終結果
//#define local
#include #include #include #include #include #include #include #include using namespace std;
int f(string &s1, string &s2){
string s;
int i,j;
//if(s1.length()>s1>>s2){
int min=f(s1,s2);
cout<<(min
UVa1588 Kickdown 換抵擋裝置
給出兩個長度分別為n1,n2且每列高度只為1或2的長條,需要將它們放入乙個高度為3的容器,求出能夠容納他們的最短容器長度。模擬插入,從第乙個介面開始插,如果不滿足條件就跳到下乙個介面,滿足條件時跳出函式輸出答案即可。includeusing namespace std int slo char a,...
UVa1588 Kickdown 換低擋裝置
題目鏈結 題意 給出兩個長度分別為n1,n2 n1,n2 100 且每列高度只為1或2的長條。需要將它們放入乙個高度為3的容器 如圖所示 問能夠容納它們的最短容器長度。分析 具體請看 1 max len1,i len2 中包含的兩種情況。len1長度足夠,另一種len1長度不夠。2 本來的情況是左右...
UVa 1588 換抵擋裝置
題目大意是說,兩個槽能夠插在一起,並保證每一列的高度不高於3,保證最短長度。思路很簡單,取短字串遍歷長字串的每乙個位置,紀錄下位置,並取最短即可。習題3 11 換抵擋裝置 void caculate17 else int minlen int strlen min arr int maxlen in...