算法
文章平均质量分 71
banzhiyu
这个作者很懒,什么都没留下…
展开
-
计算名次与按名次排序问题的算法优化
之前写过这个小算法,也没有在意,只是用for循环来一个个的比较。后来才觉得这在数据量很大的情况下会产生很多额外的开销。因此进行了优化。计算名次:进行最少次数的比较。template void Rank(T a[],int n,int r[]){for(int i=1,ir[i]=0;for(int i=1;ifor(int j=1;jif(a[j]else原创 2007-04-29 11:29:00 · 1669 阅读 · 1 评论 -
背包问题的递归与非递归算法
背包问题的基本描述是: 有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,...,wn.希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。程序1:递归算法#include #include using namespace std;const int N=7;const int S=20;int w[N+1]={0,原创 2007-05-11 02:00:00 · 1828 阅读 · 1 评论 -
自然数拆分问题
#include#includelong res[1024],Total ;//n是需要拆分的数,m是拆分的进度。void fen(long n,long m){ long rest ; //从1开始尝试拆分。 for(long i=1;i { //拆分的数大于或等于前一个,保证不重复。(第一个是0,虚拟的,不计入结果) if(i>=re原创 2007-05-07 22:44:00 · 3662 阅读 · 0 评论 -
回溯法示例1
假设需要N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。 程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下: c[i][j]:将任务i分配给工人j的费用。 task[i]:值为0表示任务i未分配。值为j表原创 2007-05-13 23:20:00 · 770 阅读 · 0 评论 -
已知前序遍历和中序遍历求后序遍历和层次遍历
#include #include #include using namespace std;int maxk;string sa, sb;char dst[1000];int index[30];void init(){//initiationmaxk = 0;memset(dst, ‘^‘, sizeof(dst));memset(index, 0, sizeof(index));co原创 2007-05-14 22:33:00 · 1341 阅读 · 0 评论