C趣味程序百例(03)借書方案知多少

字號:

8.借書方案知多少
     小明有五本新書,要借給A,B,C三位小朋友,若每人每次只能借一本,則可以有多少種不同的借法?
    *問題分析與算法設(shè)計
     本問題實際上是一個排列問題,即求從5個中取3個進行排列的方法的總數(shù)。首先對五本書從1至5進行編號,然后使用窮舉的方法。假設(shè)三個人分別借這五本書中的一本,當(dāng)三個人所借的書的編號都不相同時,就是滿足題意的一種借閱方法。
    *程序說明與注釋
    void main()
    {
     int a,b,c,count=0;
     printf("There are diffrent methods for XM to distribute books to 3 readers:\n");
     for(a=1;a<=5;a++) /*窮舉第一個人借5本書中的1本的全部情況*/
     for(b=1;b<=5;b++) /*窮舉第二個人借5本書中的一本的全部情況*/
     for(c=1;a!=b&&c<=5;c++) /*當(dāng)前兩個人借不同的書時,窮舉第三個人借5本書
     中的1本的全部情況*/
     if(c!=a&&c!=b) /*判斷第三人與前兩個人借的書是否不同*/
     printf(count%8?"%2d:%d,%d,%d ":"%2d:%d,%d,%d\n ",++count,a,b,c);
     /*打印可能的借閱方法*/
    }
    *運行結(jié)果
     There are diffrent methods for XM to distribute books to 3 readers:
     1: 1,2,3 2: 1,2,4 3: 1,2,5 4: 1,3,2 5: 1,3,4
     6: 1,3,5 7: 1,4,2 8: 1,4,3 9: 1,4,5 10:1,5,2
     11:1,5,3 12:1,5,4 13:2,1,3 14:2,1,4 15:2,1,5
     16:2,3,1 17:2,3,4 18:2,3,5 19:2,4,1 20:2,4,3
     21:2,4,5 22:2,5,1 23:2,5,3 24:2,5,4 25:3,1,2
     26:3,1,4 27:3,1,5 28:3,2,1 29:3,2,4 30:3,2,5
     31:3,4,1 32:3,4,2 33:3,4,5 34:3,5,1 35:3,5,2
     36:3,5,4 37:4,1,2 38:4,1,3 39:4,1,5 40:4,2,1
     41:4,2,3 42:4,2,5 43:4,3,1 44:4,3,2 45:4,3,5