分享一个OJ平台——浙江工商大学的OJ平台
创始人
2024-06-01 07:08:50

1.引言

    最近是有总喜欢讨论算法题,因为他们在准备考研复试,为什么我不准备呢?这是一个悲伤的故事,刚好自己也有面试遇到只能使用C和C++的代码题,他们说这OJ平台相对简单一些,那些刷不来LeetCode可以试试这个,作为入门算法的跳板。体验体验写不出来或者找不到bug的那种感觉,避免入职第一天觉得顶不住压力,说实话,前端更偏向于业务,往往就是搜索——看看配置方式——总结或者深究原理(陈然很多时候我们都没有这最后一步,前端也就成了专业码砖的了)。一旦遇到某些bug解决不了或者某些功能没有实现的思路往往一下子上头。作为菜鸡,试了试浙江工商的这个还是挺适合我的,举出例子让前端编程弱的友友们了解一下吧。

2.网站

    浙江工商大学OJ平台,链接:http://acm.zjgsu.edu.cn/,我们学校也有,大一也做了一些,但是没能坚持下去,算法需要足够的毅力才能有一些证书上的成果。当然也不必因为觉得算法不好而自卑,各有所长很正常,计算机越学越广。

3.题例一

    题目简介:
在这里插入图片描述
    思路上还是很好想出来的,关键是容错处理,首部和尾部的空格(可能是连续的无效空格),最后的解决思路是:
(1)首先排除首部的无效空格,然后再来计数;立一个flag,如果头部一直是空格,那么flag一直不变,出现字符反转flag,也就是有单词。
(2)中间计数:如果前面一个是空格,后一个不是空格,那么计数一次;
(3)后置处理:如果最开始设置的flag没有反转过,那就是都是空格,也就是没有单词;如果有单词,那么需要最后在计数的基础上+1,因为判断是基于单词空格判断的。
简单贴一下代码吧:

#include//算法的万能头
using namespace std;
int main() {string str;int num = 0;getline(cin, str);int len = str.length();int flag = 0;for (int i = 0; i < len; i++) {//去掉首部的空格if (!flag && str[i] == ' ') {continue;} else {flag = 1;if (i > 0 && (str[i - 1] == ' ' && str[i] != ' ')) {num++;}}}if (!flag)cout << 0 << endl;else {cout << num + 1 << endl;}return 0;
}

4.题例二

     其实主要是想说这个,有点东西的:
在这里插入图片描述
     如果没有踩到坑或者没有仔细复盘可能不知道里面的坑,大概也就是为什么这题的通过率这么低。注意题意的理解,先找最小值再交换,再找最大值再交换,注意第二次是对交换之后的数据进行操作。很多人估计和我一样:这还不简单,直接遍历一次,找出最大最小值的下标交换,完事了,但是一直有部分样例没有通过。
     其实原因是:同时遍历再交换和两次有先后顺序的处理是不一样的,最后我通过复盘找到了一组数据:4 3 1(题目保证输入数据不重复),如果是同时遍历再交换,那么执行流程将是如下的情况:
(1)找到最小最大值下标(题意要求先换小的),也就是下标对应于20
(2)交换最小值位置,由于最小的数不在第一个位置,交换变成了1 4 3
(3)交换最大值位置,由于最大的数据不在最后的位置,交换变成了3 4 1(是的,变回去了)。
然而如果按照题意的两次,第一次交换也就是第一次交换最小值,变成了:1 3 4,第二次交换最大值,也就是不变了。有点东西,算法还是不能想当然,不然怎么错的都得想半天。

相关内容

热门资讯

墨韵承古意 文心写春秋 宏基始创凭耕凿;盛德长垂励后昆。 撰联 陈新长 书者 陈新长 水秀山青,未许寻常人领趣;...
强化党建引领 提升育人实效 王成涛 高校是落实立德树人根本任务的主阵地,承担着培养德智体美劳全面发展的社会主义建设者和接班人的重...
去年全国演出票房收入616.5...   2025年10月7日晚,游客在河北省唐山市丰南区河头老街景区观看演出。 新华社发  本报记者 韩...
东西城推动中轴线文保示范区创建   本报讯(记者 张骜)围绕中轴线系统性保护与提升,核心区将有哪些新动作?昨天,记者从东城区两会发布...
我省畅联“软联通”激活辐射中心... 转自:云南日报从制度创新到要素流动,从金融互联到贸易畅通……云南建设我国面向南亚东南亚辐射中心10年...