P9012 [USACO23JAN] Moo Operations B题解
第 1 道赛场 AC 的题,必须发篇题解记录一下。
Tips:
——题目
才 100,这就可以随便整活了。
如果你稍微懂点英语,就会知道第
于是你迅速写出了下面的check函数,并用它AC了前几个点
int check(string a) {
if (a.size() < 3) // 不让加字符,小于 3 的肯定就废了
return -1;
int step = 0;
if (a == "MOO") // 都一样了你还变它干啥,浪费表情(
return step;
string tmp1 = a;
step++;
if (tmp1[0] == 'M') // 胡乱尝试
tmp1[0] = 'O';
else
tmp1[0] = 'M';
if (tmp1 != "MOO") {
step++;
if (tmp1[2] == 'M')
tmp1[2] = 'O';
else
tmp1[2] = 'M';
} else
return step;
if (tmp1 != "MOO") {
step--; // 撤销第 1 步操作,所以是--
if (tmp1[0] == 'M')
tmp1[0] = 'O';
else
tmp1[0] = 'M';
} else
return step;
if (tmp1 != "MOO")
return -1;
return step;
}
这样你就能顺利的 AC 前三个点了。
那剩下的咋整?
“MOO”就仨字符,那你把它砍成只有仨字符的形式不就得了?反正
ACCode
#include <bits/stdc++.h>
using namespace std;
int n;
string str;
int min(int a, int b) {
return a > b ? b : a;
}
bool checkSubString(string a, string b) {
int x = a.size(), y = b.size();
if (x <= y) {
for (int i = 0; i < y; i++) {
if (b[i] == a[0]) {
bool flag = true;
for (int j = 0; j < x; j++)
if (b[i + j] == a[j])
continue;
else {
flag = false;
break;
}
if (flag)
return true;
}
}
}
return false;
}
int check(string a) {
if (a.size() < 3)
return -1;
int step = 0;
if (a == "MOO")
return step;
string tmp1 = a;
step++;
if (tmp1[0] == 'M')
tmp1[0] = 'O';
else
tmp1[0] = 'M';
if (tmp1 != "MOO") {
step++;
if (tmp1[2] == 'M')
tmp1[2] = 'O';
else
tmp1[2] = 'M';
} else
return step;
if (tmp1 != "MOO") {
step--;
if (tmp1[0] == 'M')
tmp1[0] = 'O';
else
tmp1[0] = 'M';
} else
return step;
if (tmp1 != "MOO")
return -1;
return step;
}
int checker(string x) {
if (x.size() <= 3)
return check(x);
int mn = 10000;
string a[] = {"OOO", "OOM", "OMO", "OMM", "MOO", "MOM", "MMO", "MMM"};
for (int i = 0; i < 8; i++) {
if (checkSubString(a[i], x)) {
int tmp = check(a[i]);
if (tmp != -1)
mn = min(mn, (tmp + x.size() - 3));
}
}
if (mn == 10000)
return -1;
return mn;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
cin >> str;
printf("%d\n", checker(str));
str = "";
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具