借書方案值多少

小明有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);
}
發佈了32 篇原創文章 · 獲贊 29 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章