您好,欢迎访问三七文档
题目三要求::一个小孩手中有N块正方形的积木,他总是想不同的方法来搭建各种不同的楼梯。他搭建的楼梯必须满足如下条件:楼梯每个台阶的砖块数不能相同,且严格递减。每个楼梯至少包含两个台阶必须用完所有的积木请编写程序计算该小孩最多有多少种满足上述条件的不同的搭建方法。输入要求:输入1行,积木的个数N,N大于等于3。输出要求:输出1行,有多少种不同的楼梯搭建方法。输入样例:5输出样例2程序流程图:开始intn;inti,j;intn1,n2;intm=0;staticinta[1];a[0]=0;输入积木数量nN2=n;n1=1;n20?n2=n2-n1;n1++;yesn1--;n2=0;i=3;i=n1?1.调用函数add()yes(n/2)*2==n?a[0]=a[0]+n/2-1;yesa[0]=a[0]+n/2;输出a[0]结束Noadd(intn,intn1,int*a,intt)inti,j,k;Inti1;i=1;it?yesj=1;yesji?k=1;yeskj?i+j+k==n?yesa[0]++;yesk++;noj++;noi++no结束NoN1==3?--n1;i1=1;noi1n?Add((n-i1),n1,&a[0],i1);yesi1++;运行结果&&实例分析当输入的积木块数为5时,由于最大阶数n1为2,直接进行两阶运算,得到结果2.输入积木块数为10时,最大阶数n1为4,进行3阶函数运算,4阶递归函数的调用,在进行两阶运算,求和得到结果9.算法时间复杂度:1.算法的输入规模为1;2.算法的基本操作为a[0]的自加运算3.操作次数和输入规模有关1+k*n(k0&&k为常数)4.C(n)=2+k*n算法复杂度为常数阶。
本文标题:题目三
链接地址:https://www.777doc.com/doc-5443835 .html