文中代码来自同学,非原创。
EOJ 3194
#include <bits/stdc++.h>
using namespace std;
int del(char *t)
{
char s1[101], s2[101];
strcpy(s1, t);
int l1 = strlen(s1), l2 = 0, l = 0;
if (!l1) return 0;
s1[l1] = '?'; s1[l1+1] = 0;
for(int i = 1; i <= l1; ++i)
if (s1[i] != s1[i-1]) {
if(l == i-1)
s2[l2++] = s1[i-1];
l = i;
}
s2[l2] = 0;
if (l1 == l2) return 0;
return l1 - l2 + del(s2);
}
char t1[101], t2[101];
int ans;
void solve(int i, const char* cc)
{
strncpy(t2, t1, i); t2[i] = 0;
strcat(t2, cc); strcat(t2, t1+i);
ans = max(ans, del(t2));
}
int main()
{
int cas, len;
cin >> cas;
for(int t = 0; t < cas; ++t) {
cin >> t1;
ans = 0;
len = strlen(t1);
for(int i = 0; i < len; ++i) {
solve(i, "A");
solve(i, "B");
solve(i, "C");
}
printf("case #%d:\n%d\n", t, ans);
}
return 0;
}
EOJ 3240
#include <bits/stdc++.h>
using namespace std;
const int maxn = 205;
int sum[maxn], a[maxn];
char s[maxn][maxn];
void solve(int l, int r)
{
if (l == r) return;
int sum1 = (l ? sum[r]-sum[l-1] : sum[r]);
int sumi = 0, diff = sum1, cut = l;
for (int i = l; i <= r; ++i) {
sumi += a[i];
if (abs(2*sumi-sum1) < diff) {
diff = abs(2*sumi-sum1);
cut = i;
}
}
for (int i = l; i <= cut; ++i) strcat(s[i], "0");
for (int i = cut+1; i <= r; ++i) strcat(s[i], "1");
solve(l, cut);
solve(cut+1, r);
}
int main()
{
int cas, n;
cin >> cas;
for (int t = 0; t < cas; ++t) {
memset(s, 0, sizeof s);
cin >> n;
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
sum[i] = (i ? sum[i-1]+a[i] : a[i]);
}
solve(0, n-1);
printf("case #%d:\n", t);
for (int i = 0; i < n; ++i)
printf("%d:%s\n", a[i], s[i]);
}
return 0;
}
EOJ 1284
#include <bits/stdc++.h>
using namespace std;
string pre, in;
void tree_recover(int prel, int prer, int inl, int inr)
{
int rt, szl, szr;
for (rt = inl; rt <= inr; ++rt)
if (pre[prel] == in[rt]) break;
szl = rt - inl; szr = inr - rt;
if (szl) tree_recover(prel+1, prel+szl, inl, rt-1);
if (szr) tree_recover(prel+szl+1, prer, rt+1, inr);
putchar(in[rt]);
}
int main()
{
while (cin >> pre >> in)
{
int len = pre.size();
tree_recover(0, len-1, 0, len-1);
cout << endl;
}
return 0;
}