博舍

算法实验——递归与分治 性别识别算法实验报告怎么写的

算法实验——递归与分治

 

一、实验目的:

理解递归算法的思想和递归程序的执行过程,并能熟练编写递归程序。

掌握分治算法的思想,对给定的问题能设计出分治算法予以解决。

具体要求:

1.分析并掌握“棋盘覆盖问题”的递归与分治算法示例;

2.练习使用递归与分治策略求解具体问题;

二、实验环境:

VisualC++实验环境

三、实验内容:

(写出主要的内容)

1.

1)编写完整的主函数,分别记录利用上述递归函数求第45,46,47,48个Fibonacci数所花费的时间。

a.源代码:

#include

#include

intfi(intn)

{

 

 if(n

                    F=Fa+Fb;

                    Fb=Fa;

                    Fa=F;

             }

             returnF;

}

 

intmain()

{inti;

 doubleX;

 X=clock()/CLOCKS_PER_SEC;

 for(i=0;i2)。对于给定N(1≤N≤10000),请判别数列第N项的奇偶性。

Input:

给定整数N,如N=0则结束输入(N=0不需要判断)。

Output:

输出第N项Fibonacci数列的奇偶性,如果为奇数则请输出“ODD”,否则为“EVEN”。

SampleInput:

1

2

3

0

SampleOutput:

ODD

ODD

EVEN

解:

源代码如下:

#include

#include

intfi(intn)

{

 

 if(n

             scanf("%d",&N);

             a[i]=N;

             i++;

             g++;

 

      }    

      for(i=0;i

                    sec=a[n-1],max=a[n-2];

             }

        else 

             {

                    sec=a[n-2],max=a[n-1];

             }

              returnsec;

     }

      else

    

  { sec=f(n-1);

 

       if(a[n-1]>max)//找到数列中最大的数

       {

              sec=max,max=a[n-1];

       }

       if(a[n-1]sec)

       {

              sec=a[n-1];//找第二大的数

       }

       returnsec;

    }

 

}

 

voidr()//随机生成数列的数

{

      srand(time(NULL));

      for(inti=0;i

             printf("%d ",a[j]);

      }

 

      printf(" ");

      printf("第二大的数为:");

      w=f(n);

      printf("%d ",w);

}

测试数据的截图:

5.棋盘覆盖

源代码如下:

#include

#include

 

intnCount=0;

intboard[100][100];

 

voidchessBoard(inttr,inttc,intdr,intdc,intsize);

 

intmain()

{

   intsize,r,c,row,col;

   

   scanf("%d",&size);

   scanf("%d%d",&row,&col);

   chessBoard(0,0,row,col,size);

 

   for(r=0;r

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇