刷题实践 | 豆包MarsCode AI刷题

51 阅读5分钟

在青训营的学习过程中,我经常使用AI刷题功能,例如“二分数字组合”这道题,我首先自己写出如下所示的代码

def solution(n, A, B, array_a):
    array_a = [x % 10 for x in array_a]
    
    total_sum = sum(array_a)
    total_sum %= 10
    if (total_sum == A or total_sum == B):
        return 1
    if (total_sum != (A + B) % 10):
        return 0

    f = [[0 for _ in range(10)] for _ in range(n + 1)]
    f[0][0] = 1
    for i in range(1 , n + 1):
        for j in range(10):
            f[i][j] += f[i - 1][j]
            f[i][j] += f[i - 1][(j - array_a[i - 1] + 10) % 10]
    
    return f[n][B]

经过AI检查后发现了如下所示的问题:

  1. 返回值问题

    • 你的代码返回的是 f[n][B],这表示前 n 个数字中,是否存在一种划分方式使得其中一组的和的个位数为 B。但这并不能直接表示所有可能的划分方式的数量。
    • 你需要统计所有可能的划分方式,即 f[n][A]f[n][B] 的组合情况。

修改建议

  1. 修改返回值

    • 你需要统计所有可能的划分方式,即 f[n][A]f[n][B] 的组合情况。
    • 你可以使用一个计数器来统计所有可能的划分方式。

根据上述问题修改代码

修改后的代码框架如下所示

def solution(n, A, B, array_a):
    array_a = [x % 10 for x in array_a]
    
    total_sum = sum(array_a)
    total_sum %= 10
    if (total_sum == A or total_sum == B):
        return 1
    if (total_sum != (A + B) % 10):
        return 0

    f = [[0 for _ in range(10)] for _ in range(n + 1)]
    f[0][0] = 1
    for i in range(1 , n + 1):
        for j in range(10):
            f[i][j] += f[i - 1][j]
            f[i][j] += f[i - 1][(j - array_a[i - 1] + 10) % 10]
    
    # 统计所有可能的划分方式
    count = 0
    for j in range(10):
        if f[n][j] > 0:
            count += f[n][j]
    
    return count

在我看来,使用 AI 刷题有以下几个显著的好处:

1. 即时反馈

  • 快速纠错:AI 可以立即检查你的代码并指出错误,帮助你快速定位问题。
  • 实时建议:AI 可以提供实时的代码优化建议,帮助你改进代码的效率和可读性。

2. 个性化学习

  • 适应性学习路径:AI 可以根据你的学习进度和理解程度,提供个性化的学习路径和题目推荐。
  • 针对性辅导:AI 可以根据你的错误和薄弱点,提供针对性的辅导和练习,帮助你更好地掌握知识点。

3. 提高效率

  • 自动化测试:AI 可以自动运行测试用例,节省你手动测试的时间。
  • 代码生成:AI 可以帮助你生成代码框架或部分代码,减少重复性工作,让你更专注于算法和逻辑。

4. 多语言支持

  • 跨语言学习:AI 可以支持多种编程语言,帮助你在不同语言之间切换学习,拓宽你的编程技能。
  • 语言转换:AI 可以帮助你将一种语言的代码转换为另一种语言,方便你在不同项目中使用。

5. 知识库丰富

  • 海量题库:AI 可以访问大量的题库和解题思路,帮助你找到更多的练习题目和参考答案。
  • 算法讲解:AI 可以提供详细的算法讲解和解题思路,帮助你更好地理解算法和数据结构。

6. 持续学习

  • 学习记录:AI 可以记录你的学习进度和解题历史,帮助你跟踪学习效果。
  • 持续改进:AI 可以根据你的学习记录,不断优化推荐内容和辅导方式,帮助你持续进步。

总结

使用 AI 刷题可以帮助你更高效地学习和练习编程,提供即时反馈、个性化学习、提高效率、多语言支持、丰富的知识库和持续学习的机会。这些好处可以帮助你更快地掌握编程技能,提升解题能力。

而豆包MarsCode AI刷题存在与市面上其他AI不同的一些更先进的功能,如:

  • 精选真题:精选的真题能够确保您接触到具有代表性和典型性的题目,帮助您更高效地掌握核心知识点和常见题型。这对于有针对性地提升解题能力至关重要,避免在一些偏题、怪题上浪费时间。
  • 云端编辑器:云端编辑器提供了随时随地进行编程练习的便利,不受本地设备和环境的限制。您可以在不同的设备上继续之前的练习,并且方便保存和分享代码。
  • 个性化题目推荐:根据您的学习进度、掌握程度和薄弱环节,为您推荐个性化的题目。这有助于精准地弥补知识漏洞,提高学习效果。

AI 刷题的优势在于能够根据个人情况提供定制化的学习路径。例如,我在学习数据结构时,通过个性化题目推荐,我首先接触到了一些基础的链表操作题目,随着我不断练习并掌握,系统又为我推荐了更复杂的树和图的相关题目。这种循序渐进的方式让我能够逐步提升,而且在遇到难题时,云端编辑器方便我随时修改和调试代码,提高了解题效率。同时,精选真题让我能够快速了解考试的重点和常见题型,为备考提供了明确的方向。