借书方案值多少

来源:互联网 发布:陆丰龙山中学知乎 编辑:程序博客网 时间:2024/06/05 07:28

小明有5本新书,要借给A、B、C这三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?

这属于排列组合问题:

第一种方案:

#include<stdio.h>int main(){    int a,b,c,i=0;    printf("A,B,C三人所选书号分别为:\n");    for(a=1;a<=5;a++)        for(b=1;b<=5;b++)            for(c=1;c<=5;c++)                if(a!=b&&a!=c&&b!=c)                {                    printf("A:%2d B:%2d C:%2d",a,b,c);                    i++;                    if(i%4==0)                    printf("\n");                }    printf("共有%d种有效借阅方式\n",i);}

第二种方案稍微修改后,没有改进仍有的三层循环,但是在程序的执行时间有了很大的提高。源程序不管a,b的值是否相等,循环都要重复5次,现在就可以避免这个了。

#include<stdio.h>int main(){    int a,b,c,i=0;    printf("A,B,C三人所选书号分别为:\n");    for(a=1;a<=5;a++)        for(b=1;b<=5;b++)            for(c=1;c<=5&&a!=b;c++)                if(a!=c&&b!=c)                {                    printf("A:%2d B:%2d C:%2d",a,b,c);                    i++;                    if(i%4==0)                    printf("\n");                }    printf("共有%d种有效借阅方式\n",i);}
0 0
原创粉丝点击