logo
0
0
WeChat Login
gpt-engineer-app[bot]<159125892+gpt-engineer-app[bot]@users.noreply.github.com>
Initial commit from remix

C++算法训练平台

一个现代化的C++算法题目训练网站,采用可拓展的设计,通过markdown维护题目。

功能特性

  • 📚 基于Markdown的题目管理: 每道题目都是一个独立的markdown文件,便于维护和扩展
  • 🏷️ 双维度智能标签系统: 编程标签(数据结构、算法)+ 知识标签(具体知识点)
  • 🔍 强大的筛选功能: 支持按标签、难度、关键词筛选题目
  • 📱 响应式设计: 完美适配桌面和移动端
  • 🎨 现代化UI: 采用清爽的设计风格,知识图谱占据一半屏幕空间

题目模版

每道题目采用以下markdown模版格式:

# 题目标题

## 题目描述

题目的详细描述...

## 标签
- 编程标签: array, dp, tree
- 知识标签: chicken-rabbit-cage, linear-equation, analytic-geometry

## 输入格式

输入数据的格式说明...

## 输出格式

输出数据的格式说明...

## 约束条件

• 数据范围约束
• 时间复杂度要求
• 空间复杂度要求

## 输入输出样例

### 输入
\`\`\`
样例输入数据
\`\`\`

### 输出
\`\`\`
样例输出数据
\`\`\`

### 说明

样例的解释说明...

## 提示

1. 提示1
2. 提示2

标签系统

系统采用双维度标签分类:

编程维度标签

数据结构

  • 数组 (array)
  • 字符串 (string)
  • 链表 (linkedlist)
  • 树 (tree)
  • 图 (graph)
  • 堆 (heap)

算法

  • 排序 (sorting)
  • 搜索 (searching)
  • 动态规划 (dp)
  • 贪心 (greedy)
  • 回溯 (backtracking)
  • 分治 (divideconquer)

知识维度标签(具体知识点)

应用题

  • 鸡兔同笼 (chicken-rabbit-cage)
  • 追及问题 (pursuit-problem)
  • 相遇问题 (meeting-problem)
  • 工程问题 (work-efficiency)
  • 盈亏问题 (profit-loss)

代数

  • 一元一次方程 (linear-equation)
  • 二元一次方程组 (quadratic-equation)
  • 不等式 (inequality)
  • 函数 (function)
  • 多项式 (polynomial)

几何

  • 解析几何 (analytic-geometry)
  • 平面几何 (plane-geometry)
  • 立体几何 (solid-geometry)
  • 三角形 (triangle)
  • 圆 (circle)

组合数学

  • 排列组合 (permutation-combination)

概率统计

  • 概率 (probability)
  • 统计 (statistics)

数学基础

  • 数论 (number-theory)

思维训练

  • 逻辑推理 (logic-reasoning)

力学

  • 运动学 (kinematics)
  • 动力学 (dynamics)
  • 能量守恒 (energy-conservation)

电磁学

  • 电场 (electric-field)
  • 磁场 (magnetic-field)

标签维护说明

在Markdown中维护标签

在题目的markdown文件中,使用以下格式维护标签:

## 标签
- 编程标签: array, dp, tree
- 知识标签: chicken-rabbit-cage, linear-equation

在代码中维护标签

标签定义在 src/data/sampleProblems.ts 文件中:

  1. programmingTags: 定义编程相关标签
  2. knowledgeTags: 定义具体知识点标签
  3. tagCategories: 定义标签分类结构

每个标签包含以下属性:

  • id: 标签唯一标识符
  • name: 标签显示名称
  • category: 标签所属分类
  • color: 标签显示颜色
  • problemCount: 包含此标签的题目数量
  • dimension: 标签维度 ('programming' | 'knowledge')

添加新的知识点标签

  1. knowledgeTags 数组中添加新标签
  2. 在对应的 tagCategories 中确保分类包含新标签
  3. 在题目数据中使用新标签ID
  4. 在markdown中使用新标签ID

示例:

// 在 knowledgeTags 中添加
{ 
  id: 'new-knowledge-point', 
  name: '新知识点', 
  category: '应用题', 
  color: 'bg-blue-50 text-blue-700', 
  problemCount: 5, 
  dimension: 'knowledge' 
}

// 在题目中使用
knowledgeTags: ['new-knowledge-point', 'chicken-rabbit-cage']

系统架构

  • 前端框架: React + TypeScript + Vite
  • UI组件库: shadcn/ui + Tailwind CSS
  • 状态管理: React Hooks
  • 路由: React Router
  • 图标: Lucide React

添加新题目

  1. src/data/sampleProblems.ts 中添加题目数据
  2. 确保题目包含完整的编程标签和知识标签
  3. 编写完整的markdown内容,包含标签声明
  4. 系统会自动识别和展示新题目

开发指南

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

扩展功能

系统设计为可扩展架构,可以轻松添加:

  • 题目提交和判题系统
  • 用户账户和进度跟踪
  • 题解和讨论区
  • 比赛和排行榜
  • 更多具体知识点标签

贡献指南

欢迎提交新题目和功能改进!请确保:

  1. 题目格式符合模版要求
  2. 标签分类准确,使用具体知识点
  3. 代码风格一致
  4. 添加适当的测试用例
  5. 在markdown中正确标注编程标签和知识标签