1. 循环穷举法
双重循环枚举所有可能的鸡兔组合,检查是否满足头和脚的总数条件。
clude
t main
t heads, feet;
intf(“输入总头数和脚数(空格分隔): “);
anf(“%d %d”, &heads, &feet);
t chicken, rabbit, found = 0;
r (chicken = 0; chicken <= heads; chicken++)
bbit = heads
(2 chicken + 4 rabbit == feet)
intf(“鸡: %d只, 兔: %d只
icken, rabbit);
und = 1;
eak; // 找到解后退出循环
(!found) printf(“无解
turn 0;
trong>特点:
2. 代数解法(直接公式法)
数学推导公式求解,无需循环:
clude
t main
t heads, feet;
intf(“输入总头数和脚数: “);
anf(“%d %d”, &heads, &feet);
公式推导:
设鸡 = c, 兔 = r → c + r = heads, 2c + 4r = feet
解得:r = (feet
(feet % 2 != 0 || feet 4 heads)
intf(“无解:输入不合法!
// 脚数需为偶数且满足范围
turn 0;
t rabbit = (feet
t chicken = heads
(rabbit >= 0 && chicken >= 0)
intf(“鸡: %d只, 兔: %d只
icken, rabbit);
se
intf(“无解
turn 0;
trong>特点:
3. 输入验证与边界处理
保程序健壮性,需检查下面内容边界情况:
场景 | 处理方式 |
脚数为奇数 | 直接报错(无整数解) |
脚数 4×头数 | 输入不满足生物学约束,报错 |
头数或脚数为负数 | 提示输入非法 |
计算结局为负 | 无解(如头数10、脚数10) |
4. 测试用例
输入(头, 脚) | 预期输出 | 验证技巧 |
`35, 94` | 鸡23只, 兔12只 | 经典难题解 |
`10, 32` | 鸡6只, 兔4只 | 正常情况 |
`5, 12` | 无解(脚数不足) | 边界检查 |
`0, 0` | 笼中无动物 | 零值处理 |
5. 技巧对比与选择建议
技巧 | 适用场景 | 推荐指数 |
循环穷举法 | 教学演示、小规模数据(头数 完整代码示例(代数法优化版):
包含输入循环、错误重试机制,见[开源中国案例]。
上述技巧,可高效解决鸡兔同笼难题,同时确保代码健壮性。建议优先使用代数法,并在教学中结合循环法帮助领会枚举想法。

