有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?还要考虑无解问题(穷举法)用python
时间: 2025-03-10 16:10:13 浏览: 120
好的,我们来通过穷举法解决“鸡兔同笼”问题。这个问题的关键在于我们知道总共有35个头和94只脚,并且需要找出鸡(2条腿)和兔(4条腿)各有几只。
### 穷举法思路
1. **设定变量**
- `total_heads` 表示总的头数。
- `total_feet` 表示总的脚数。
2. **枚举可能性**
- 我们可以遍历所有可能的鸡的数量(从0到总头数),并根据剩余的头数计算对应的兔子数量。
- 对于每个组合,检查它是否符合给定的总脚数。
3. **判断解的存在性**
- 如果找到一组符合条件的鸡和兔的数量,则输出结果。
- 如果没有任何组合满足条件,则输出无解信息。
这种做法虽然不是最高效的算法,但对于这类规模较小的问题非常直观易懂,适合初学者理解。
下面是具体的Python代码实现:
```python
def find_chickens_and_rabbits(total_heads, total_feet):
solutions = []
for num_chickens in range(total_heads + 1): # 枚举鸡的数量
num_rabbits = total_heads - num_chickens
if (num_chickens * 2 + num_rabbits * 4) == total_feet:
solutions.append((num_chickens, num_rabbits))
return solutions
if __name__ == "__main__":
total_heads = 35 # 总共多少个头
total_feet = 94 # 总共多少只脚
results = find_chickens_and_rabbits(total_heads, total_feet)
if len(results) > 0:
print(f"存在解决方案:")
for sol in results:
print(f"鸡: {sol[0]} 只, 兔: {sol[1]} 只")
else:
print("无解!")
```
### 运行结果解释
当你运行上述代码时,会得到以下输出:
```
存在解决方案:
鸡: 23 只, 兔: 12 只
```
这表示在这个特定的例子中有23只鸡和12只兔能够恰好凑够35个头和94只脚。
### 考虑更多案例
你可以修改`find_chickens_and_rabbits()` 函数中的参数来测试不同的输入值,并观察是否存在合理的解答或显示无解的信息。
#### 测试用例建议
尝试更改`total_heads` 和 `total_feet` 的取值看看会发生什么变化,例如:
- 设置`total_heads=10`, `total_feet=32` 应该返回`(4, 6)` 因为四只鸡加六只兔正好匹配;
- 尝试一些不可能的情况如`total_heads=10`, `total_feet=31` 则应报告无法解决问题;
此外,还可以探讨极端情况下的表现,比如当全部都是鸡或是全是兔的情形下应该如何处理?
阅读全文
相关推荐


















