小明有五本新書,要借給A,B,C三位小朋友,若每人每次只能借一本,則可以有多少種不同的借法?*問題分析與演算法設計本問題實際上是一個排列問題,即求從5個中取3個進行排列的方法的總數。首先對五本書從1至5進行編號,然後使用窮舉的方法。假設三個人分別借這五本書中的一本,當三個人所借的書的編號都不相同時,就是滿足題意的一種借閱方法。
#include <stdio.h>#include <math.h>int main(){int a,b,c,count=0;printf("There are diffrent methods for Xiao Ming 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++)//當前兩個人借不同的書時,窮舉第三個人借5本書中的1本的全部情況{if(c!=a&&c!=b)//判斷第三人與前兩個人借的書是否不同{printf("%2d:%d,%d,%d\t",++count,a,b,c);//列印可能的借閱方法}}}}return 0;}
或者
#include <stdio.h>#include <math.h>void main(){int i,j,k,count=0;printf("There are diffrent methods for Xiao Ming to distribute books to 3 readers:\n");for(i=1;i<=5;i++){for(j=1;j<=5;j++){if (j!=i){for(k=1;k<=5;k++){if(k!=i&&k!=j){++count;printf("%2d:A=%d,B=%d,C=%d\t",count,i,j,k);}else continue;}}else continue;}}}