爱嘉牛LA

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

10 2012 档案

摘要: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 阅读(238) 评论(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 阅读(289) 评论(0) 推荐(0)

摘要: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 阅读(678) 评论(0) 推荐(0)

摘要:算法分析:设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 阅读(166) 评论(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 阅读(286) 评论(0) 推荐(0)

摘要: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 阅读(187) 评论(0) 推荐(0)

摘要:分析可以看: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 阅读(214) 评论(0) 推荐(0)