首页 > 其他 > 详细

初级系列2.借书方案问题

时间:2019-09-08 10:11:01      阅读:77      评论:0      收藏:0      [点我收藏+]

借书方案

问题描述
小明有五本新书,要借给A B C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?
问题分析
属于排列组合问题,即求从5个数中取三个不同数的排列组合的总数
|--将五本书从1 - 5进行编号,A B C三个人每次都可以从5本书中任选1本,即每人都有5种选择,由于1本书不可能同时借给一个以上的人因此只要这三个人所选书的编号不同,即一次有效的借阅方法
算法设计
穷举法, 三重循环

#include <stdio.h>

int main(void)
{
    int a,b, c, i = 0;  /* !< a,b,c分别用来记录三个人所选新书编号,i用来控制有效借阅次数*/
    printf("A,B,C三人所选书号分别为:\n");
    for (a = 1; a <= 5; a++) {          /* !< 用来控制A借阅图书编号*/
        for (b = 1; b <= 5; b++) {      /* !< 用来控制B借阅图书编号*/
            for (c = 1; c <= 5; c++) {  /* !< 用来控制C借阅图书编号*/
                if (a != b && a != c && c != b) { /*此条件用来控制有效借阅组合*/
                    printf("A:%2d B:%2d C:%2d   ", a, b, c);
                    i++;
                    if (i % 4 == 0) {       /*每行最多输出4种借阅方法组合*/
                        printf("\n");       /*输出有效的借阅方法总数*/
                    }
                }
            }
        }
    }
    printf("共有%d种有效借阅方法\n", i);
}
#!/usr/bin/python3
i = 0
for a in range(1, 6):
    for b in range(1, 6):
        for c in range(1, 6):
            if a != b and a != c and b != c:
                print("a, b, c", a, b, c)
                i += 1

print("have methods: i", i)
/* !< output */
a, b, c 1 2 3
a, b, c 1 2 4
a, b, c 1 2 5
a, b, c 1 3 2
a, b, c 1 3 4
a, b, c 1 3 5
a, b, c 1 4 2
a, b, c 1 4 3
a, b, c 1 4 5
a, b, c 1 5 2
a, b, c 1 5 3
a, b, c 1 5 4
a, b, c 2 1 3
a, b, c 2 1 4
a, b, c 2 1 5
a, b, c 2 3 1
a, b, c 2 3 4
a, b, c 2 3 5
a, b, c 2 4 1
a, b, c 2 4 3
a, b, c 2 4 5
a, b, c 2 5 1
a, b, c 2 5 3
a, b, c 2 5 4
a, b, c 3 1 2
a, b, c 3 1 4
a, b, c 3 1 5
a, b, c 3 2 1
a, b, c 3 2 4
a, b, c 3 2 5
a, b, c 3 4 1
a, b, c 3 4 2
a, b, c 3 4 5
a, b, c 3 5 1
a, b, c 3 5 2
a, b, c 3 5 4
a, b, c 4 1 2
a, b, c 4 1 3
a, b, c 4 1 5
a, b, c 4 2 1
a, b, c 4 2 3
a, b, c 4 2 5
a, b, c 4 3 1
a, b, c 4 3 2
a, b, c 4 3 5
a, b, c 4 5 1
a, b, c 4 5 2
a, b, c 4 5 3
a, b, c 5 1 2
a, b, c 5 1 3
a, b, c 5 1 4
a, b, c 5 2 1
a, b, c 5 2 3
a, b, c 5 2 4
a, b, c 5 3 1
a, b, c 5 3 2
a, b, c 5 3 4
a, b, c 5 4 1
a, b, c 5 4 2
a, b, c 5 4 3
have methods: i 60

初级系列2.借书方案问题

原文:https://www.cnblogs.com/xuzhaoping/p/11484377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!