众所周知,郑州轻工业大学的oj平台是比较开放的,里面有很多优质的题源和算法。轻大的新生也十分给力,周赛基本都能在一个小时内全部OK。对于大部分新生,oj前200已经可以游刃有余了。
先简单讲一下这个oj1686吧,这个题目其实只是循环的一个小分支,而且难度很低,轻大新生随随便便就ak了。但是对于我们这些十分菜的新生吧,我还是愿意分享一下我的解析。
先看题目
解析一:好像可以用getchar在while里面循环再判断什么条件退出,虽然按一般来说,字符串末尾是‘\0’,文本的末尾是EOF,但是这里并没有提示,在实际提交的时候会出现时间超限表示没有成功判断退出。
解析二:可以是字符数组存入这个字符串,而且在存入的时候,字符数组会贴心的加入‘\0’,因此可以在用条件退出循环的时候可以用这个判断,但是我个人还是比较推荐用头文件的<string.h>中的strlen函数(正所谓库函数不用白不用,又好用又方便还省事还通俗易懂)
tips:多学习库函数可以省去很多不必要的步骤和提高代码能力。
#include<stdio.h>
#include<string.h>
int main() {
char sum[50];//定义字符数组
int a = 0, c = 0, m = 0, n = 0;//只是很简单易懂的定义
scanf_s("%s", sum,50);//这里我使用的是VS,大家可以自行修改一下(其实是自己太弱了,根本用不了其他编译器)
int len = strlen(sum);//长度
while (len--) {//简单的循环
if (sum[n] == 'a') {
a++;//如果字符为a的话,变量a加1,下同
}
if (sum[n] == 'c') {
c++;
}
if (sum[n] == 'm') {
m++;
}
n++;//移动下标
}
int min = a;//字符数目最小的那个字符就是acm单词的个数
if (c < min) {
min = c;
}
if (m < min) {
min = m;
}
printf("%d",min);
return 0;
}
编译器为VS,抄写的时候请自行修改,否则编译错误!!!!!
为了防止特殊法则,目前已经进行了新一次的自定义博客尝试(HTML+CSS),里面会有更多的技巧的解析,以后也会将博客的代码放入GitHub中。