本项目实现了LeetCode 322 零钱兑换问题的多种算法(动态规划、记忆化搜索、贪心算法、暴力搜索)的可视化,并提供了交互式的学习体验。项目重点增强了动态规划算法的可视化效果,使其更加直观易懂。
- 多算法支持:实现了四种常见解法的可视化
- 交互式体验:提供了交互功能,帮助理解算法细节
- 直观可视化:使用色彩、形状和动画增强视觉效果
- 教育价值:适合算法初学者和教育工作者使用
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建项目
npm run build动态规划可视化分三个阶段实现:
- 基础增强 - 改进表格样式和交互体验
- 状态转移可视化 - 展示依赖箭头、计算过程和公式
- 硬币组合可视化 - 以图形方式展示最优硬币组合
- 记忆化搜索 - 展示递归调用栈和记忆表
- 贪心算法 - 展示贪心选择过程
- 暴力搜索 - 展示搜索树和遍历过程
├── docs/ # 项目文档
│ └── animation_designs/ # 可视化设计文档
│ └── dp/ # 动态规划可视化文档
├── src/ # 源代码
│ ├── algorithms/ # 算法实现
│ ├── components/ # React组件
│ ├── styles/ # CSS样式
│ └── types/ # TypeScript类型定义
└── public/ # 静态资源
- React - 用户界面库
- TypeScript - 类型安全的JavaScript超集
- D3.js - 数据可视化库
- Redux - 状态管理
- Vite - 构建工具
详细的设计和实现文档位于 docs/animation_designs/dp/ 目录下:
欢迎贡献代码、报告问题或提出改进建议。请查看 贡献指南 了解更多信息。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
- 感谢 LeetCode 提供的算法问题
- 感谢 D3.js 社区提供的优秀可视化库
- 感谢所有参与项目的贡献者