1.2算法入门之借书方案

来源:互联网 发布:python零基础入门pdf 编辑:程序博客网 时间:2024/05/29 19:27

一 . 问题描述

小明有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次;

//穷举法

int main(int argc, const char * argv[]) {

    // insert code here...

    

    static int i=0;

    static int j=0;

    int a,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);

            }

        }

    }

    

    

    

    return 0;

}

#endif




int main(int argc, const char * argv[]) {

    // insert code here...

    

    static int i=0;

    static int j=0;

    int a,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);

            }

        }

    }

    

    

    return 0;

}


0 0