首页 > 教程攻略 > ai资讯 >Gemini拆解算法题时,提示词里要写哪些背景信息

Gemini拆解算法题时,提示词里要写哪些背景信息

来源:互联网 时间:2026-06-06 08:06:36

先来回顾一个最经典的题设:给你一个整数数组和一个整数 k,要求返回元素和可被 k 整除的非空连续子数组的数目。

这道题的核心解法,其实是利用了前缀和的一个特殊性质——同余。简单解释一下:如果两个前缀和对 k 取模的结果相同,那么这两个前缀之间的子数组的和,就一定可以被 k 整除。所以思路非常清晰:用一个哈希表来统计每个余数出现的次数,初始时余数为0的计数设为1(因为空前缀和也是0)。然后遍历数组,累加前缀和的过程中,记得对负数做一下取模修正,每次更新答案。

但你看,当你拿着这类思路去跟 Gemini 拆解一道算法题时,它给出的回答却经常是“泛泛而谈的思路”、“跳步的伪代码”,甚至直接套个模板答非所问。问题通常出在哪里?不是题目没给全,而是你在提示词里遗漏了一个关键背景——你根本没告诉 AI,它现在是在帮谁解题、在哪种约束下解题、解完要给谁看。

必须写清的三类背景信息

第一点:告诉它你的能力阶段和知识盲区。比如说“我刚学完双指针和BFS,但没系统练过动态规划的状态定义”——这比干巴巴说一句“我是初学者”有用十倍。Gemini 会因此压低推导起点,不会一上来就甩给你一段“设dp[i][j]表示……”这样断层式的表达。

第二点:交代题目来源和使用场景。明确说“这是LeetCode第139题,准备用于字节跳动后端岗面试”,AI会自动过滤掉竞赛向的复杂优化(比如滚动数组压缩),专心聚焦在可以手写、可以口头讲清楚的解法路径上。如果你说的是“这是ACM校赛热身题”,那它大概率会补上时间复杂度证明或者边界hack案例。

第三点:精准定位你的卡点。别说“看不懂”,要说“卡在如何把‘子数组和为k’转化为前缀和差值匹配”,或者“明白状态转移,但不理解为什么base case要设为dp[0]=1”。这个定位越精确,Gemini拆解的颗粒度就越细,不会在你已经掌握的部分反复铺垫。

方法一:用“认知锚点句式”嵌入背景

直接套用这个结构:“你是一位有8年力扣刷题教学经验的算法教练。我现在是大三学生,刚用Python实现过快排和归并,但没写过带memo的递归。当前题目是:[粘贴题目原文]。我卡在[具体卡点,如‘无法把二维DP压缩成一维’]。请用‘问题重述→暴力解法缺陷→状态设计动机→状态转移图解→Python可运行代码’五步展开。”

这一步的关键在于,把“我不会什么”转化成AI能识别的教学信号。它看到“没写过带memo的递归”,就不会默认你懂记忆化原理;看到“大三学生”,就不会拿研究生课才讲的线段树优化来糊弄你。

方法二:绑定真实调试行为

如果你已经写了部分代码但报错,直接把错误信息和代码片段一起扔进提示词。比如:“我写了如下代码,运行时报IndexError: list index out of range,第12行for j in range(i+1, n)出错。请指出逻辑漏洞,并用‘错误定位→反例构造→修正思路→改写代码’四步说明。”

注意:一定要复制真实报错信息,不要自己改写成“数组越界”。Gemini对原始报错文本的解析准确率比人工转述高47%,尤其对IndexError、KeyError这类具体异常类型。

方法三:设定输出时的读者身份

第一步,明确接收者是谁。比如“请按给大一助教讲解的方式输出”,它会多画图、少公式;写“请按给CTO做技术方案汇报的方式输出”,它就会优先讲时间空间权衡、工程落地风险、测试用例覆盖点。

第二步,指定交付物形态。例如“生成一份可直接粘贴进Obsidian的Markdown笔记,含三级标题、代码块、带序号的思考误区列表”,AI就不会返回纯文本段落,也不会漏掉你强调的“思考误区”这个模块。

第三步,声明不可接受的内容。加上一句“不解释什么是哈希表、不展开讲递归原理、不给出C++/Ja va版本”,能立刻砍掉60%以上的冗余信息。操作很简单,直接把不需要的部分列出来就行。

相关下载