分享一个OJ平台——浙江工商大学的OJ平台

1.引言

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

2.网站

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

3.题例一

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

#include<bits/stdc++.h>//算法的万能头
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,第二次交换最大值,也就是不变了。有点东西,算法还是不能想当然,不然怎么错的都得想半天。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌空暗羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值