給出兩個長度為x,y且每列高度只為1或2的長條。需要將它們放入乙個高度為3的容器,求出能容納它們最短容器長度。
每列高度只有1或2的意思是每個長條由1或2的單位小長條橫向排列而成,如果兩個長條上下扣的時候可以1,2全部或部分互補,總長就比較短,如果沒有,只能分開放。
總體思路是採取將乙個較短的長條倒置,從左向右平移,迴圈判斷每個單位的長度之和是否超過3,並不斷更新平移的位置,記錄最短的和長度,其實並不複雜。
#include int main()
} if(flag) location=head;
}head=len1;
for(head;head3)
} if(flag)
}head=len2;
for(head;head3)
} if(flag)
if(len1+len2-head>location)
} printf("%d",len1+len2-location);
}
換抵擋裝置(Kickdown)
題目 給出兩個長度分別是 n1 n2 n1,n2 100 且每列的高度只為1或2的長條。需要將他們放入乙個高度為3的容器,問能容納他們的最短容器長度。分析每組輸入兩行數,且只由1,2構成。然後上下兩排需要以最小長度咬合在一起,不過可以1對1形成乙個空缺。然後求咬合後的總長度的最小值。讀入時可以先用字...
UVa 1588 換抵擋裝置
題目大意是說,兩個槽能夠插在一起,並保證每一列的高度不高於3,保證最短長度。思路很簡單,取短字串遍歷長字串的每乙個位置,紀錄下位置,並取最短即可。習題3 11 換抵擋裝置 void caculate17 else int minlen int strlen min arr int maxlen in...
UVa1588 Kickdown 換抵擋裝置
給出兩個長度分別為n1,n2且每列高度只為1或2的長條,需要將它們放入乙個高度為3的容器,求出能夠容納他們的最短容器長度。模擬插入,從第乙個介面開始插,如果不滿足條件就跳到下乙個介面,滿足條件時跳出函式輸出答案即可。includeusing namespace std int slo char a,...