給出兩個長度分別為n 1 ,n 2 (n 1 ,n 2 ≤100)且每列高度只為1或2的長條。需要將它們放入一個高度為3的容器(如圖3-8所示),問能夠容納它們的最短容器長度。
模擬 分別固定其中一個,一步一步移動另一個,并找出結(jié)果的最小值
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxn = 1e2 +5;#define met(a,b) memset(a, b, sizeof(a));char a[maxn], b[maxn];int solve(char a[], int len1, char b[], int len2){ int ans = 0, i, j, k; for(i = 0; i < len1; ++i) { for(j = 0, k = 0; i + j < len1 && k < len2; ++j,++k){ int t1 = a[i + j] - '0', t2 = b[k] - '0'; if(t1+t2 > 3){ break; } } if(i + j == len1 || k == len2) { ans = max(len1, i + len2); break;} } if(i == len1) ans = len1 + len2; return ans;}int main(){ #ifdef _LOCAL freopen("in.txt","r", stdin); #endif // _LOCAL while(scanf("%s%s", a, b) == 2) { int len1 = strlen(a), len2 = strlen(b);新聞熱點(diǎn)
疑難解答