PTA Chap4课前LI-7【例4-11】穷举问题-搬砖

软件3班许国荣202321332079 软件23 2023-11-06 15:35:33

题目:某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?

输入格式:

输入在一行中给出一个正整数n

输出格式:

输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。

如果找不到符合条件的方案,则输出"None"

输入样例:

45

输出样例:

men = 0, women = 15, child = 30
men = 3, women = 10, child = 32
men = 6, women = 5, child = 34
men = 9, women = 0, child = 36

  首先,设置一个函数solve_brick(int n)函数接受一个参数n,在函数内部利用for循环的嵌套枚举所有可能的男人、女人、小孩的数量,计算是否满足总数为n,且积木数量恰好为n的条件。函数如下:

void solve_brick(int n) {
    int cnt_men, cnt_women, cnt_child;
    int found = 0;
    for (cnt_men = 0; cnt_men <= n; cnt_men++) {
        for (cnt_women = 0; cnt_women <= n; cnt_women++) {
            for (cnt_child = 0; cnt_child <= n; cnt_child++) {
                if ((cnt_men * 3 + cnt_women * 2 + cnt_child * 0.5) == n && cnt_men + cnt_women + cnt_child == n) {
                    printf("men = %d, women = %d, child = %d\n", cnt_men, cnt_women, cnt_child);
                    found = 1;
                }
            }
        }
    }
    if (!found) {
        printf("None\n");
    }
}

然后,输入n,将n,代入函数作为参数即可,完整代码如下:

#include <stdio.h>
void solve_brick(int n) {
    int cnt_men, cnt_women, cnt_child;
    int found = 0;
    for (cnt_men = 0; cnt_men <= n; cnt_men++) {
        for (cnt_women = 0; cnt_women <= n; cnt_women++) {
            for (cnt_child = 0; cnt_child <= n; cnt_child++) {
                if ((cnt_men * 3 + cnt_women * 2 + cnt_child * 0.5) == n && cnt_men + cnt_women + cnt_child == n) {
                    printf("men = %d, women = %d, child = %d\n", cnt_men, cnt_women, cnt_child);
                    found = 1;
                }
            }
        }
    }
    if (!found) {
        printf("None\n");
    }
}
int main() {
    int n;
    scanf("%d", &n);
    solve_brick(n);
    return 0;
}

 

 

 

 

 

...全文
187 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
张老师 2023-11-16
  • 打赏
  • 举报
回复

运用了穷举算法,还可以分析一下其特点、不足和改进。

286

社区成员

发帖
与我相关
我的任务
社区描述
程序设计基础课程教学群
c语言c++ 高校 福建省·厦门市
社区管理员
  • xmzq001
  • 鹿饮涧鸣
  • jiangxiaoju
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

请加入学习社区的软件23级同学修改社区昵称为学号+姓名,以便登记作业提交情况。

试试用AI创作助手写篇文章吧