爱嘉牛LA

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

2012年11月10日

摘要: 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 阅读全文
posted @ 2012-11-10 09:43 爱嘉牛LA 阅读(260) 评论(0) 推荐(0) 编辑

2012年10月24日

摘要: View Code Inter_Bresenham_Line(int x0,int y0,int x1,int y1){//起点和终点的坐标 int x,y,dx,dy; float e; dx=x1-x0; dy=y1-y0; k=dy/dx; x=x0; y=y0; e=-dx; for(int l=0;l<=dx;l++){ putpixel(x,y); x+=1; e=e+2*dy; if(e>=0){ y+=1; ... 阅读全文
posted @ 2012-10-24 21:36 爱嘉牛LA 阅读(230) 评论(0) 推荐(0) 编辑

摘要: View Code void Bresenham_Circle(int xc,int yc,int r){//xc,yc是圆的中心坐标 int x,y,d; y=r; d=3-2*r; x=0; while(x<=y){ plotC(x,y,xc,yc);//画点 if(d<0) d+=4*x+6; else{ d+=4*(x-y)+10; y=y-1; } x=x+1; }} void plotC(int x,int ... 阅读全文
posted @ 2012-10-24 21:18 爱嘉牛LA 阅读(275) 评论(0) 推荐(0) 编辑

2012年10月23日

摘要: 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... 阅读全文
posted @ 2012-10-23 22:28 爱嘉牛LA 阅读(655) 评论(0) 推荐(0) 编辑

2012年10月16日

摘要: 算法分析:设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 阅读全文
posted @ 2012-10-16 18:35 爱嘉牛LA 阅读(155) 评论(0) 推荐(0) 编辑

摘要: 问题:在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个较小规模的棋盘覆盖问题。递归地使用这种分割,知道 阅读全文
posted @ 2012-10-16 18:33 爱嘉牛LA 阅读(272) 评论(0) 推荐(0) 编辑

2012年10月13日

摘要: View Code #include<iostream>using namespace std;#define MAXN 100int num;void print(int *a,int n){ int i; cout<<num++<<": "; for(int i=0;i<n-1;i++) cout<<a[i]<<' '; cout<<a[n-1]<<endl;}void P(int *a,int n,int m,int lev,int *temp,int *tag) 阅读全文
posted @ 2012-10-13 14:27 爱嘉牛LA 阅读(180) 评论(0) 推荐(0) 编辑

2012年10月10日

摘要: 分析可以看: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时,首先可以有一... 阅读全文
posted @ 2012-10-10 21:17 爱嘉牛LA 阅读(204) 评论(0) 推荐(0) 编辑

2012年9月3日

该文被密码保护。 阅读全文
posted @ 2012-09-03 00:13 爱嘉牛LA 阅读(2) 评论(0) 推荐(0) 编辑

2012年8月19日

摘要: View Code #include<iostream>using namespace std;int main(){ int a[]={12,4,65,8,325,9,88,56,45,17,77}; int *p1,*p2,t,length; length=sizeof(a)/sizeof(a[0]); p1=a;p2=a+length-1; for(int i=0;i<length/2;i++){ t=*p1;*p1=*p2;*p2=t; p1++; p2--; } for(int i=0;i<lengt... 阅读全文
posted @ 2012-08-19 16:38 爱嘉牛LA 阅读(3890) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 下一页