題目
給出兩個長度分別是 n1 , n2 (n1,n2<=100)且每列的高度只為1或2的長條。
需要將他們放入乙個高度為3的容器,問能容納他們的最短容器長度。
分析每組輸入兩行數,且只由1,2構成。然後上下兩排需要以最小長度咬合在一起,
不過可以1對1形成乙個空缺。然後求咬合後的總長度的最小值。
讀入時可以先用字串儲存,然後轉化為陣列。這樣可以方便運算同時利用字元陣列的
易寫入特性。
之後只需兩次二層迴圈遍歷即可(分別以其中一行為固定,另一行進行移動)。
不符合的條件為上下咬合後高度大於3.
c實現
#include#include#define maxn 205
intmain()
for(int i=0;i)
//下面不動
inti,j;
for(i=0;i)
}if(j==lent)
}int ans1 = i+lentlent;
//上面不動
for(i=0;i)
}if(j==lenb)
} int ans2 = i+lenblenb;
printf(
"%d\n
",ans1 < ans2?ans1:ans2);
}return0;
}
UVa1588 Kickdown 換抵擋裝置
給出兩個長度分別為n1,n2且每列高度只為1或2的長條,需要將它們放入乙個高度為3的容器,求出能夠容納他們的最短容器長度。模擬插入,從第乙個介面開始插,如果不滿足條件就跳到下乙個介面,滿足條件時跳出函式輸出答案即可。includeusing namespace std int slo char a,...
換抵擋裝置
給出兩個長度為x,y且每列高度只為1或2的長條。需要將它們放入乙個高度為3的容器,求出能容納它們最短容器長度。每列高度只有1或2的意思是每個長條由1或2的單位小長條橫向排列而成,如果兩個長條上下扣的時候可以1,2全部或部分互補,總長就比較短,如果沒有,只能分開放。總體思路是採取將乙個較短的長條倒置,...
UVa 1588 換抵擋裝置
題目大意是說,兩個槽能夠插在一起,並保證每一列的高度不高於3,保證最短長度。思路很簡單,取短字串遍歷長字串的每乙個位置,紀錄下位置,並取最短即可。習題3 11 換抵擋裝置 void caculate17 else int minlen int strlen min arr int maxlen in...