一 . 问题描述
小明有5本新书,要借给A,B,C这3个小朋友,若每次只能借1本,则可以多少不同的借法?
二. 问题分析
本题属于数学的排列组合问题,给5本书进行编号,即求3个不同数字的排列组合总数,将5本书编号,A,B,C3人每次可以从5本书选择1本,即为5种选择,现在条件为1本书只能借给一个人,
三. 算法设计
采用穷举法 a<5,b<5,c<5
#include<stdio.h>
//方式一:穷举法
//效率地,要循环21X34X101=72114次;
//穷举法
intmain(intargc,constchar* argv[]) {
// insert code here...
staticinti=0;
staticintj=0;
inta,b,c ;
for(a=1; a<=5;a++)
{
for(b=1;b<=5; b++)
{
for(c=1; c<=5; c++)
{
if(a!=b&&b!=c&&c!=a)
{
printf("A:%dB:%dC:%d ",a,b,c);
j++;
if(j%4==0) {
printf("\n");
}
}
i++;
//循环执行了125次
// printf("i=%d",i);
}
}
}
return0;
}
#endif
intmain(intargc,constchar* argv[]) {
// insert code here...
staticinti=0;
staticintj=0;
inta,b,c ;
for(a=1; a<=5;a++)
{
for(b=1;b<=5; b++)
{
//虽然也是三层循环,但加了一个判断a!=b,在进入循环体,可以减少循环的次数
for(c=1; c<=5&&a!=b; c++)
{
if(b!=c&&c!=a)
{
printf("A:%dB:%dC:%d ",a,b,c);
j++;
if(j%4==0) {
printf("\n");
}
}
i++;
//循环执行了100次
//printf("i=%d",i);
}
}
}
return0;
}