UVa 1588 換抵擋裝置

2022-01-23 05:20:58 字數 1204 閱讀 5440

題目大意是說,兩個槽能夠插在一起,並保證每一列的高度不高於3,保證最短長度。

思路很簡單,取短字串遍歷長字串的每乙個位置,紀錄下位置,並取最短即可。

//習題3-11 換抵擋裝置

void caculate17()

else

int minlen = (int)strlen(min_arr);

int maxlen = (int)strlen(max_arr);

int min = minlen + maxlen;

// 從最長數字的左邊開始對齊

for (int j = 0; j < maxlen; j++)

j_temp--;

}if (result)

else

if (temp < min) }}

if (strlen(min_arr) != strlen(max_arr))

j_temp++;

}if (result)

else

if (temp < min) }}

}printf("%d\n", min);

}}// 題目同上

void caculate18() else

int maxlen = (int)strlen(max_arr);

int minlen = (int)strlen(min_arr);

int min = maxlen + minlen;

int result = 0;

for (int i = -minlen; i < maxlen + minlen; i++) }}

// 短字串在左邊,部分重合

if (ok && i < 0)

}//短字串在右邊,部分重合

if (ok && i > maxlen - minlen)

}// 完全重合(最優解)

if (ok && i >= 0 && i + minlen <= maxlen)

}if (result)

else

}}// 大神思路,簡單高效

void caculate19()

}if (ok)

}printf("%d\n", ret);

}}int main()

呃,我的實現是第一種,沒ac,應該是只過了部分的測試用例,但我不知道怎麼改了~

UVA 1588 紫書習題3 11換抵擋裝置

大致題意 給你連個長度分別為n1,n2且每列高度只為1或2的長條,然後將他們拼在一起,高度不能超過3,問他們拼在一起的最短長度。本體思路 剛開始我的思路是先讓短的在下面,讓上面的不動,通過移動下面的長條來逐一比較,當長條從左到右移動完了之後,就能找到最短。但是 交上去之後 樣例能通過但是一直wa,可...

UVA 1588 換低擋裝置

思路 模擬題 注意下標i j 和j的對應字串的匹配關係 注意要模擬從最左邊到最右邊 剛開始做莫名其妙wa,檢查不出錯誤,後面重寫了才過的 ac include include includeusing namespace std char s1 105 s2 105 用字串讀方便 int main ...

UVa1588 Kickdown 換抵擋裝置

給出兩個長度分別為n1,n2且每列高度只為1或2的長條,需要將它們放入乙個高度為3的容器,求出能夠容納他們的最短容器長度。模擬插入,從第乙個介面開始插,如果不滿足條件就跳到下乙個介面,滿足條件時跳出函式輸出答案即可。includeusing namespace std int slo char a,...