Online Judge Toolkit 发布啦

C++ Github Makefile 数组 算法 链表 队列 二叉树 运算符重载

IT公司的校招笔试通常是一些算法类的题目,近年来基本都是在线OJ的形式。 于是有一个本地的OJ工具能有很大帮助,比如数组、字典的cout/cin, 常见算法的C++实现等。现在Harttle整理了一个OJ工具库:oj.h, 近日已完成工具文档,欢迎试用和贡献代码!

基本使用

从Github下载工具库:https://github.com/harttle/oj.h

代码仓库中的main.cpp便是一个使用示例。

引入其中的oj.h并使用oj命名空间即可。比如下面的数组输入输出:

#include "oj.h"
using namespace oj;

int main() {
    vector<int> v;
    // input: 2 1 3 4
    cin >> v;
    // output: [2,1,3,4]
    cout << v << endl;
    return 0;
}

Map/Set

同样地,mapset也支持输入输出:

map<int, char> mp;
// input: 1 a 2 b 3 c
cin >> mp;
// output: {<1,a>,<2,b>,<3,c>}
cout << mp << endl;
set<int> st;
// input: 2 3 1
cin >> st;
// output: {1,2,3}
cout << st << endl;

链表、二叉树

oj.h提供了一些常用的数据结构,如链表:

LinkList<int>* head = new LinkList<int>();
head->next = new LinkList<int>(1);
head->next->next = new LinkList<int>(2);
// output: 0->1->2
cout << head << endl;

二叉树:

Tree<int>* root = new Tree<int>();
root->left = new Tree<int>(1);
root->right = new Tree<int>(2);
root->right->left = new Tree<int>(3);
root->right->right = new Tree<int>(4);
// output: 0 1 # # 2 3 # # 4 # #
cout << *root << endl;

更多使用方式参见文档: https://github.com/harttle/oj.h

Harttle

致力于简单的、一致的、高效的前端开发

看看这个?