摘要: 思想:对于数列,设其全排列用集合表示。其全排列集合可以用一种递归方式定义:其中,表示以开头的所有全排列集合。程序实现可以用递归实现,代码如下:voidprint_it(intarr[],intn);voidarrange_all(intarr[],intsize,intpos);voidswap(int&a,int&b);intmain(){inta[4]={1,2,3,4};arrange_all(a,4,0);return0;}/*函数名:voidarrange_all(intarr[],intsize,intpos)描述:打印所有排列参数:arr[]排列存放的数组size 阅读全文
posted @ 2012-09-30 14:42 子桥 阅读(762) 评论(0) 推荐(0) 编辑
摘要: 给定一个数n,求其阶乘的末尾有多少个0。末尾为0的产生原因是阶乘中出现了含有因子为2、5的数。含有因子为2的数,即偶数,远远多于含有因子为5的数。因此求出有多少个5的倍数就可以了,n/5。这只考虑了两个数相乘末尾为一个0的情况,如2*5,但是还有两个数相乘末尾为两个0、三个0;末尾有两个零是因为有因子4和25,末尾有三个0是因为有因子8、125。。。这样可以写出公式程序实现也很简单,对输入的n,求其与5、25、125...的商,然后加起来就是了intmain(){inti;while(1==scanf("%d",&i)){intcount=0;while(i!=0) 阅读全文
posted @ 2012-09-30 14:01 子桥 阅读(1125) 评论(0) 推荐(1) 编辑