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


    借书方案

    问题描述
    小明有五本新书,要借给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三人所选书号分别为:
    ");
    	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("
    ");       /*输出有效的借阅方法总数*/
    					}
    				}
    			}
    		}
    	}
    	printf("共有%d种有效借阅方法
    ", 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
    
  • 相关阅读:
    Linux就该这么学--Shell脚本基本应用
    Linux就该这么学--了解Shell脚本
    Linux就该这么学--命令集合11(配置系统相关信息)
    解決 centos -bash: vim: command not found
    Linux就该这么学--命令集合10(vim编辑器)
    Linux就该这么学--命令集合9(环境变量)
    html5 浏览器端数据库
    加密技术---仿射密码
    数组的运用、排序
    面试题参考
  • 原文地址:https://www.cnblogs.com/xzpin/p/11484377.html
Copyright © 2020-2023  润新知