求完数算法

#include<stdio.h>#include<math.h>int main(){ __int64 a[8]={2,3,5,7,13,17,19,31}; // perfect=( 2^( n-1 ) )*(2^n-1) //( 2^n - 1 ) is a prime number , // and n==a[ i ]--->prime number __int64 i,n,k,perfect[8]; whi...
2008-05-16 10:24 | 阅读 2834 次 | 评论 0 条

整数划分算法

for(i=1; i<=101; i++) f[0][i]=f[1][i]=f[i][1]=1; for(; i<=1001; i++) f[i][1]=1; for(i=2; i<=1001; i++) { for(j=2; j<=101; j++) if(i>=j) f[i][j]=f[i-j][j]+f[i][j-1]; else for(; j<=101; j++) f[i][j]=f[i][i];
2008-05-15 10:26 | 阅读 2773 次 | 评论 0 条

Floyed

从有向图的带权的邻接矩阵 cost出发,对有向图的n个顶点加以编号,若从i到j有弧(i=1,2,...,n,j=1,2,...,n),则从i到j 存在一条长度为cost(i,j)的路线。但该路径不一定是最短路径,尚需修改,修改的方法是进行n次试探。首先考虑路径(i,1,j)(即在i,j中插进点1),看〈i,1〉,〈1,j〉是否存在,若存在,再比较 (i,j)与(i,1,j)这两条路径,长度较短者为当前求得的最短路径。于是这条求得的最短路径的 中间点序号不大于1。然后再在各对点i,j中插进一个点2,看〈i,...,2〉,〈2,...,j〉是否存在, 若不存在,那么当前的最短路径仍是上次求得...
2008-05-11 10:41 | 阅读 1889 次 | 评论 0 条

“中国剩余定理”算理及其应用(转)

今天在做北大acm1006题,找了一些诶资料。 “中国剩余定理”算理及其应用: 为什么这样解呢?因为70是5和7的公倍数,且除以3余1。21是3和7的公倍数,且除以 5余1。15是3和5的公倍数,且除以7余1。(任何一个一次同余式组,只要根据这个规律求出那几个关键数字,那么这个一次同余式组就不难解出了。)把 70、21、15这三个数分别乘以它们的余数,再把三个积加起来是233,符合题意,但不是最小,而105又是3、5、7的最小公倍数,去掉105的倍 数,剩下的差就是最小的一个答案。 用歌诀解题容易记忆,但有它的局限性,只能限于用3、5、7三个数去除,用其它的数去除就不行了。后来我国...
2008-05-06 22:12 | 阅读 1902 次 | 评论 3 条

0/1背包问题动态规划详解

动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。 /* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......输出格式: X */ 因为背包最大容量M未知。所以,我们的程序要从1到M一个一个的试。比如,开始任选N件物品的一个。看对应M的背包,能不能放进去,如果能放进去,并且还有多的空间,则,多出来的空间里能放N-1物品中的最大价值。怎么能...
2008-04-26 18:39 | 阅读 2651 次 | 评论 1 条
最新评论