一个C语言题目?

这个用C语言怎么实现,求完整过程... 这个用C语言怎么实现,求完整过程 展开
 我来答
xgn911
2022-11-28 · TA获得超过1355个赞
知道小有建树答主
回答量:1493
采纳率:96%
帮助的人:583万
展开全部

递归,传入参数为未答题同学数k和当前总得分sum

每次一位同学答题后k--,然后有四种选择使总分发生变化,即沿四个分支继续递归

递归终止条件为k==0,此时再判断sum是否为0即可

C语言代码和运行结果如下:

输出为36,数学验证一下,总分为0只可能为:4个同学都选甲题,2对2错;

4个同学都选乙题,2对2错;2个同学选甲题,1对1错,另2个同学选乙题,1对1错

因此答案为:A(4,2)+A(4,2)+A(4,2)=36,结果正确,望采纳~

附源码:

#include <stdio.h>

int ans = 0;

void dfs(int k, int sum) {

    if (k == 0) { // 所有人都答题完毕

        if (sum == 0)

            ans++;

        return;

    }

    dfs(k - 1, sum + 100); // 选择甲题且答对

    dfs(k - 1, sum - 100); // 选择甲题且答错

    dfs(k - 1, sum + 80); // 选择乙题且答对

    dfs(k - 1, sum - 80); // 选择乙题且答错

}

int main() {

    dfs(4, 0); // 一共4人,初始得分为0

    printf("%d\n", ans);

    return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式