
C/C++
C++
SVIP_Quanw
I am so vegetable
展开
-
邻接表实现的有向带权图 及 图算法(C++)
邻接表(Adjacency List):我实现的方法相当于加邻接表是一个 Vertex类型的数组( adj = new Vertex[ ] )数组元素Vertex中有一个指向Edge对象的指针(相当于链表的头节点),用来存放与对应Vertex相连的边前面 public 的结构体是后面一些成员函数的返回值(因为有的要返回多个值有点要用特定的方式处理返回值)和一些后面的算法会用到的(并查集)。没有边的从输入流获取边的2. 析构函数就删除边和顶点对象3. 深度优先遍历 接受一个参数为Verte原创 2022-06-03 10:27:21 · 3393 阅读 · 2 评论 -
邻接矩阵实现的带权有向图(C++)
邻接矩阵中带权有向图的定义:设G=(V,E),则:原创 2022-06-03 10:04:23 · 2825 阅读 · 0 评论 -
Flip Game (不太暴力的解法)
Flip Game1. 大概题意2. 不太暴力的思路3. 代码3.1 C++3.2 Java前一篇暴力解法 (链接)1. 大概题意翻转游戏是在一个 4x4 的方形场地上进行的,在其 16 个方格中的每一个方格上都放置有两个面的棋子。每个棋子的一面是白色的,另一面是黑色的,每个都是黑色或白色的一面朝上。每轮你翻转 3 到 5 块,从而将它们上侧的颜色从黑色变为白色,反之亦然。每轮都根据以下规则选择要翻转的棋子:1.选择 16 个中的任何一个。2.将选定的棋子以及所有相邻的棋子翻转到所选棋原创 2022-05-23 22:22:19 · 1206 阅读 · 0 评论 -
POJ1753 Flip Game(位运算+枚举+深搜回溯)
POJ1753 Flip Game1. 大概题意2. 思路&做法(位运算+枚举+深搜回溯)3. 全部代码3.1 C++ 代码3.2 Java 代码 (稍有不同)1. 大概题意翻转游戏是在一个 4x4 的方形场地上进行的,在其 16 个方格中的每一个方格上都放置有两个面的棋子。每个棋子的一面是白色的,另一面是黑色的,每个都是黑色或白色的一面朝上。每轮你翻转 3 到 5 块,从而将它们上侧的颜色从黑色变为白色,反之亦然。每轮都根据以下规则选择要翻转的棋子:1.选择 16 个中的任何一个。原创 2022-05-22 18:22:12 · 580 阅读 · 0 评论 -
字符串String类
字符串String类String.h#ifndef __STRING_H__#define __STRING_H__#include <iostream>/** * @brief 自己写的字符串类 * 末尾没有\0,用{ len }记录长度 * */class String {private: char* str; int len;public: /** * @brief Construct a new String object * */原创 2022-05-09 14:32:01 · 168 阅读 · 0 评论 -
字符串匹配 KMP BF
字符串匹配 KMP BF字符串匹配?BFKMP字符串匹配?简单的说就是: 给定两个字符串S, T 在主串S中找到模式TBFC++代码/** * @brief brutal force 暴力 * * @param str 字符串 * @param pat 模式 * @return int 首字母下标或-1表示没找到 */int bf(string str, string pat) { for (size_t i = 0; i < str.length(); i++) { s原创 2022-04-19 21:32:48 · 728 阅读 · 0 评论 -
静态链表 ( 数据结构 )
静态链表什么是静态链表 😯定义结点的定义链表的定义常用操作1. 添加2. 访问什么是静态链表 😯静态链表( static linked list ), 就是用数组来表示链表,用数组元素的下标来模拟链表的指针.由于是利用数组来定义的链表,属于静态储存分配, 因而叫做静态链表.其实很好理解,如果把内存看作一个巨大的数组, 那么递归定义的链表和静态链表就相差无几了.最常用的静态链表是静态单链表( 有一个next指针 ), 后面静态链表特指静态单链表定义结点的定义静态链表的节点也有由两个域组成: 数原创 2022-04-16 18:32:37 · 5891 阅读 · 1 评论 -
L2-002 链表去重 (25 point(s))
L2-002 链表去重 (25 point(s))给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(N≤105N≤10^5N≤105 ,为结点总数)。一个结点的地址是非负的 5 位整数,空原创 2022-04-16 17:59:20 · 186 阅读 · 0 评论 -
我的代码规范 ( C++ )
C++代码规范我的代码规范1. 命名我的代码规范1. 命名#define BUF_SIZE 1024 // 宏定义全部大写,下划线分隔constexpr ARRAY_LEN 265 // 常量全部大写,用下划线分隔/*变量命名要有意义变量名尽量不缩写作用域越大, 名字可以越长*/ // 注释对齐char* my_name = nullptr; // 变量全部小写用下划线分隔int g_flag;原创 2022-04-15 20:45:21 · 180 阅读 · 0 评论 -
队列 ( 数据结构 )
队列1. 基于循环数组的队列2. 基于链表的队列1. 基于循环数组的队列/** * 顺序队列(基于数组) */template <typename T>class Queue {private: T* a; const static int DEFAULT_SIZE = 16; int size; int rear, front;public: /* 初始化 */ Queue(); /** * @param n 队列长度 */ Queue(int n);原创 2022-04-15 20:41:06 · 292 阅读 · 0 评论 -
栈 ( 数据结构 )
栈1. 基于数组的栈2. 基于链表的栈3. 测试1. 基于数组的栈/** * 使用数组实现的Stack * * a = new T[n]; * * a[++p]=t * * return a[p--] * * p?-1 */template <typename T>class Stack {private: T* a; unsigned size; int p; const static unsigned DEFAULE_SIZE = 16;public原创 2022-04-15 20:36:56 · 448 阅读 · 0 评论 -
循环链表 ( 数据结构 )
循环链表定义定义及实现测试定义头节点和单链表一样, 只是最后一个节点的指针指向了头节点而不是nullptrtemplate <class T>class Node {public: T val; Node* next; Node() = default; Node(const T& t, Node* nxt = nullptr) : val(t), next(nxt) {}};定义及实现template <typename T>class C原创 2022-04-15 20:31:32 · 426 阅读 · 0 评论 -
双向链表 ( 数据结构 )
双向链表定义定义及实现定义双向链表的节点比起单链表的next指针, 双链表多了一个proir指针指向前面的节点template <class T>class Node {public: T val; Node<T>*proir, *next; Node() : val(0), proir(nullptr), next(nullptr) {} Node(T v, Node<T>* p = nullptr, Node<T>* n = nul原创 2022-04-15 20:27:23 · 130 阅读 · 0 评论 -
单链表 ( 数据结构 )
链表定义实现测试定义链表的节点/** * @brief 单链表的节点 * @tparam T 节点元素类型(class类型比较适用) */template <class T>class Node {public: T val; Node* next; Node() = default; Node(const T& t, Node* nxt = nullptr) : val(t), next(nxt) {}};链表/** * @brief原创 2022-04-15 20:22:09 · 289 阅读 · 0 评论