
算法设计与分析
落伍者
这个作者很懒,什么都没留下…
展开
-
全排列问题
全排列问题设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。集合X中元素的全排列记为perm(X)。(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列。R的全排列可归纳定义如下:当n=1时,perm(R)=(r),其中r是集合R中唯一的元素;当n>1时,per原创 2006-03-09 20:18:00 · 1470 阅读 · 6 评论 -
n*n按行按列升序矩阵中找数问题
#define N 3main(){ int a[N][N]={{1,2,4},{2,3,5},{4,5,7}}; int i,j; int x; int flag=0; i=0; j=N-1; printf("please input x/n"); scanf("%d",&x); while(i0) { if (a[i][j]==x) { flag=原创 2006-12-02 22:13:00 · 1536 阅读 · 0 评论 -
格雷码算法
void putsgray(int a[],int m){ int i; for(i=m;i>=1;i--) { printf("%d",a[i]); } printf("/n");}void gray(int n,int a[],int m){ if(n==1) { a[n]=1-a[n]; putsgray(a,m); } else { gray(原创 2006-12-02 22:10:00 · 2175 阅读 · 0 评论 -
棋盘覆盖算法
棋盘覆盖问题下面给出了分治策略的棋盘覆盖问题的c#描述的算法,具体的分析将在后续文章给出,screen.width/2)this.style.width=screen.width/2;" border="0" alt="" />using System;namespace Design{/// /// ChessBoard 的摘要说明。/// public class ChessBoards{pr原创 2006-03-06 22:07:00 · 3459 阅读 · 2 评论 -
希腊字母发音表
序号 大写 小写 英文注音转载 2006-03-09 08:25:00 · 1732 阅读 · 0 评论 -
硬币找零(动态规划)
#include "stdlib.h"#define N 63 void GetChange(int n,int j,int m[],int c[][N] ) {/*下标从1开始*/ int Max=10000; int k,i,t; int b[5]={0}; /*最好作为一个参数*/ for( i=1;i c[i][0]=0; for(i=1;i原创 2006-03-23 21:36:00 · 1925 阅读 · 1 评论 -
硬币找零问题(动态规划)
这里贴出c#的代码 private void button4_Click(object sender, System.EventArgs e) { int [] m=new int [] {0,2,4,8,16}; int[,] c=new int [5,62]; for(int i=12;i GetChange(4,i,m,c); } private void Ge原创 2006-03-23 21:13:00 · 2599 阅读 · 0 评论 -
0-1背包算法(动态规划)
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?0-1背包问题是一个特殊的整数规划问题。 设所给0-1背包问题的子问题的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为i,i+1,…,n时0-1背包问题的最优值。由0-1背包问题的最优子结构性质,可以建立计算m(i,j)的原创 2006-03-22 12:14:00 · 8412 阅读 · 7 评论 -
0-1背包问题(回溯法)
前面这块转贴原理及c++代码实现的回溯算法-----带剪枝的递归回溯;最后给出一个不带剪枝的c语言描述的递归回溯算法且不能给出选择方案,只给出最大价值回溯法: 回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结转载 2006-03-19 21:44:00 · 8957 阅读 · 2 评论 -
硬币找零(贪心算法)
只放代码,注意判断某一面值的硬币是否可以找零的条件应该是c[i]>=m#include "stdio.h"#define N 4void change(int a[] ,int m,int c[],int f);main(){ int a[]={1,3,9,27}; int c[20]={0} ; int f=60,i; change(a,N,c,f); for(i=0;i {原创 2006-03-17 15:59:00 · 2132 阅读 · 0 评论 -
n后问题
先贴代码,现在没时间。有时间的时候慢慢写#include "math.h"int sum=0;int place(int x[],int i);void queen(int x[],int n,int t) ;void queen2(int x[],int n);void main(){ int x[8],t ; sum=0; queen(x,8,0); printf("%d/n",su原创 2006-03-17 12:58:00 · 2507 阅读 · 0 评论 -
活动安排问题(贪心算法)
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起转载 2006-03-14 21:24:00 · 7766 阅读 · 8 评论 -
prim
#include #include #define MAX_VERT_NUM 40#define INTMAX 32767typedef struct ArcNode{ int adjvex; int cost; struct ArcNode *nextarc;}ArcNode;typedef struct VNode{ArcNode *firstarc; /*指向第一条依附该顶点的弧的指针原创 2009-06-12 16:37:00 · 542 阅读 · 0 评论