摘要:#includeusing namespace std;int main(){ const int N=4; int count; count=0; for(int i=1;i<=N;i++) for(int j=0;j<=N;j++) if(j==i) continue; else for(int k=0;k<=N;k++) if(k!=j&&k!=i) { cout<<i<<j<<k<<endl; count++...
阅读全文
随笔分类 - 计算机算法
摘要:1.求给定一乱序数据,找出第k小的数据View Code 1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 5 template<class Type> 6 void Swap(Type *a,Type *b){ 7 Type temp; 8 temp=*a; 9 *a=*b;10 *a=temp;11 }12 template<class Type>13 Type select(Type a[],int L,int R,int k){ 14 //计算a[L:R.
阅读全文
摘要:View Code #include<iostream>using namespace std;int n;float c;float bestv=0;float backknap(float w[],float v[],int bestx[],int x[],float sw,float sv,int t){ int j; float r; //剩余物品的总价值 if(t>=n){ if(sv>bestv){ //如果解比当前解更优 bestv=sv; fo...
阅读全文
摘要:View Code #include<iostream>using namespace std;#define N 100int x[N];//x[i]存储当前i节点的颜色种类 int a[N][N];//存储各个顶点之间的连接情况 int sum=0;//记录有多少种涂色方案 bool OK(int k,int n){ for(int j=1;j<=n;j++) if(a[k][j]==1&&x[j]==x[k])//如果找到一个与预想把K节点涂色为x[k]的相连节点,且该节点也涂色为x[k],则涂色失败 return false; retu...
阅读全文
摘要:View Code #include<iostream>using namespace std;struct Object{ float w; float v; float w_v; int order; //物品的序号 float x;//是否放入背包,整个放入是1,一部分放入是放入的部分与总的比值,没放入为0 };Object object[100];int compare( const void *a , const void *b ) { Object *aa=(Object *)a; Object *bb=(Object...
阅读全文
摘要:View Code #include<iostream>using namespace std;#define max 100 float d[max];//m台机器的空闲时间存储在d[m]中int s[max][max];//把第j个作业放到第i太机器上去运行 typedef struct homework{//数据结构来存储作业信息 int ID; float time; }hw;typedef struct m{//快结构体的因为是把在改机器的作业存起来 int number;//记录存储在改机器的作业个数 int ma[max]; float time...
阅读全文
摘要:View Code #include<iostream>using namespace std;#define maxn 100int huffTreeN;//树中的节点个数初始化为nint i1=1,i2=2;struct element{//存储字符 double weight;//字符出现的概率为实数,次程序为了简便,不计算其概率,而直接用其出现的次数代替 int lchild;//该节点的左孩子在huffTree[]数组中的下标 int rchild;//该节点的右孩子在huffTree[]数组中的下标 int parent; //该节点的双亲节点在hu...
阅读全文
摘要:Prim算法设G=(V,E)是连通图,V={1,2,......,n}构造G的最小生成树的Prim算法的基本思想是:首先置S={1},然后,只要S是V的真子集,就坐如下的贪心选择:选取满足条件i属于S,j属于V-S,且c[i][j]最小边,并将顶点j添加到S中。这个过程一直进行到S=V时为止View Code #include<iostream>using namespace std;#define max 100float c[max][max];//存放i,j的权值float lowcost[max];//lowcost[v]存放未放入生成树的一个顶点v到生成树所有顶点的最短边
阅读全文
摘要:Kruskal算法1.首先将G的n个顶点看成n个孤立的连通分支,将所有的边按权从小到大排序e1,e2,e3...em2.从第一条边开始,依边权递增的顺序查看每一条边,并按下述方法连接两个不同的两同分支3.当查看到第K条边ek=(v,w)时,若v,w分别在两个不同而连通分支T1和T2中,用边(v,w)将T1,T2连接成一个连通分支,然后继续查看k+1条边 若v和w在当前的同一个连通分支中,就直接查看第k+1条边(既构成圈,就放弃ek) 这个过程一直进行到之剩下一个连通分支时为止。此时,这个连通分支就是G的一颗最小生成树了View Code #include<iostream>usin
阅读全文
摘要:View Code #include<iostream>using namespace std;int maxleft=0,maxright=0;//记录最大字段和起点和终点 int MaxSubsum(int *a,int left,int right){ int sum=0; if(left==right) sum=a[left]>0?a[left]:0; else{ int center=(left+right)/2; int leftsum=MaxSubsum(a,left,center); int right...
阅读全文
摘要:算法分析:设list是含有n个不同字符的字符串,perm(list,k-1,n)为list[0]~list[k-1]的所有全排列,perm(list,k,n)为list[0]~list[k]的全排列,perm(list,k-1,n)处理的字符个数比perm(list,k,n)处理的的字符少一个,假设perm(list,k-1,n)可求,对于list[k]位置,可以取list[0]~list[k]的任何值,再组合per(list,k-1,n),这得到perm(list,k,n).View Code #include int num=0;inline void Swap(char *a, char
阅读全文
摘要:问题:在2^k*2^k个方格组成的棋盘中,若恰有一个方格与其他方格不同,称该方格为一个特殊方格,且称该棋盘为一特殊棋盘。思路:显然特殊在棋盘上出现的位置有4^k中情况。因而对任何K>=0,有4^k中不同的特殊棋盘。当k>0时,将2k×2k的棋盘分成4个2k-1×2k-1的子棋盘。特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个L型骨牌覆盖这 3个较小棋盘的汇合处,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,知道
阅读全文
摘要:分析可以看:http://www.cnblogs.com/hoodlum1980/archive/2008/10/11/1308493.htmlView Code #includeint p( int n , int m ) ;int main(){ int n; int Num = 0 ; /*划分数*/ cout>n; Num = p(n,n); coutn时,由于m不能大于n,否则就会有负数出现了*/ /*因此只能表示成最大加数不大于n的划分*/ if( n < m ) return p( n , n ) ; /*当m==n时,首先可以有一...
阅读全文
摘要:View Code #include<iostream>using namespace std;//int n1=5,m1=10//不可以传到函数做参数,如fun[n1][m1],不可以,既是[]内不可以是变量 #define m1 10 //有n个物品,背包能承载的重量是m #define n1 5int Max(int a,int b){ return a>=b? a:b;}int DynamicProgramming(int n,int m,int W[],int Value[],int V[n1+1][m1+1],int X[]){ /* int n,m;//有n个.
阅读全文
摘要:#includeusing namespace std;void move(char a,char c){ cout">m; cout<<"The steps to moving"<<m<<"diskes:"<<endl; fun1(m,'A','B','C'); system("pause"); return 0;}
阅读全文

浙公网安备 33010602011771号