SP8795 TWENTYQ - Twenty Questions
题目描述
想象一个封闭的世界,其中所有对象都有一组特征,每个特征可以用“是”或“否”回答。利用这些特征,我们可以唯一地识别出任何对象。换句话说,每个对象可以表示为一个固定长度的布尔值序列。并且,任何两个对象至少在一个特征上不同。
现在,你需要从众多对象中识别出一个特定的对象。为此,你可以向知情者提出一系列问题。每个问题都围绕一个特征,知情者会立即用“是”或“否”给予准确的回答。在得到上一个问题的答案后,你可以决定下一个要问的问题。
你对每个问题都需要支付 100 日元的小费。由于经费有限,你必须在最坏情况下尽量减少提问的数量。虽然你不知道正确答案,但你知道世界上所有的对象信息,因此可以预先制定一个最优的提问策略。
你的任务是:给定一组布尔值编码的对象,计算在最坏情况下,识别出每个对象所需的最少问题数量。
输入格式
输入包含多个数据集。每个数据集从一行开始,这一行包含两个整数 $m$ 和 $n$,分别表示特征数和对象数。你可以假设 $0 < m \leq n$。
接下来的 $n$ 行,每行是一个长度为 $m$ 的由 0 和 1 组成的字符串,表示每个对象的特征。
输入以一行包含两个零结束。
输出格式
对于每个数据集,输出在最坏情况下识别出每个对象所需的最少提问次数。
**本翻译由 AI 自动生成**