c语言基因函数,遗传算法c语言实现

C语言问题:DNA排序

输入

创新互联服务项目包括龙文网站建设、龙文网站制作、龙文网页制作以及龙文网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,龙文网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到龙文省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

计算逆序值

稳定排序

代码:

#include stdio.h

#include string.h

typedef struct

{

char arr[51];

int v;

}ARR;

int main()

{

ARR list[100];

ARR t;

int n,l,i,j,k;

scanf("%d%d", l, n);

for(i = 0; i  n; i ++)

{

scanf("%s", list[i].arr);

list[i].v = 0;

for(j = 0; j  l - 1; j ++)

{

for(k = j + 1; k  l; k ++)

if(list[i].arr[k]  list[i].arr[j])

list[i].v ++;

}

}

for (i = 0; i  n; i++) 

{         

for (j = n - 1; j  i; j--)

{     

if (list[j].v  list[j-1].v) 

{        

memcpy(t, list[j-1], sizeof t);   

memcpy(list[j-1], list[j], sizeof t);   

memcpy(list[j], t, sizeof t);   

}      

}   

for(i = 0; i  n; i ++)

printf("%s\n", list[i].arr);

return 0;

}

供参考

是否有问题? 有问题请追问 没问题请采纳

求遗传算法(GA)C语言代码

x=220;

for(i=0;i12;i++)

{

y=202+i*16;

for(j=bits [ i][0];j=bits [ i][1];j++)

if(g[j]==0)

g_text(x+(j-bits [ i][0])*16,y,4,"0");

else

g_text(x+(j-bits [ i][0])*16,y,4,"1");

}

}

}

void g_disp_char(x,y,x1,y1,x2,y2,v)

int x,y,x1,y1,x2,y2;

unsigned char v;

{

char c[10];

if(x=x1 x=x2-8 y=y1 y=y2-10)

{

switch(v)

{

case 0: strcpy(c,"0");break;

case 1: strcpy(c,"+");break;

case 2: strcpy(c,"-");break;

case 3: strcpy(c,"x");

}

g_text(x,y,15,c);

}

}

void remove_life(n) /* 消除第n个个体 */

int n;

{

iflg[n]=0;

world[iatr[n][0]][iatr[n][1]]=0;

g_disp_unit(iatr[n][0],iatr[n][1],0);

if(food_size+1=MAX_FOOD)

{

food_size++;

fatr[food_size-1][0]=iatr[n][0];

fatr[food_size-1][1]=iatr[n][1];

fatr[food_size-1][2]=1;

fatr[food_size-1][3]=0;

fflg[food_size-1]=1;

world[iatr[n][0]][iatr[n][1]]=5;

g_disp_unit(iatr[n][0],iatr[n][1],5);

}

}

void remove_food(n) /* 消除第n个食物 */

int n;

{

fflg[n]=0;

world[fatr[n][0]][fatr[n][1]]=0;

g_disp_unit(fatr[n][0],fatr[n][1],0);

}

void make_lives_and_foods() /* 设置虚拟环境中生物与食物 */

{

int x,y,i,j;

pop_size=0;

food_size=0;

for(y=0;ywy;y++)

for(x=0;xwx;x++)

{

if(world[x][y]==1||world[x][y]==2)

{

if(pop_size+1=MAX_POP)

{

pop_size++;

/* 生成遗传因子 */

gene[pop_size-1][0]=world[x][y]-1;

for(i=1;iG_LENGTH;i++)

gene[pop_size-1] [ i]=random(2);

/* 设定属性 */

iatr[pop_size-1][0]=x;

iatr[pop_size-1][1]=y;

iatr[pop_size-1][2]=70+random(30);

iatr[pop_size-1][3]=random(SL_MIN);

}

}

if(world[x][y]==3||world[x][y]==5)

{

if(food_size+1=MAX_FOOD)

{

food_size++;

/* 设定属性 */

fatr[food_size-1][0]=x;

fatr[food_size-1][1]=y;

if(world[x][y]==3)

fatr[food_size-1][2]=0;

else

fatr[food_size-1][2]=1;

fatr[food_size-1][3]=random(TL1-1)+1;

}

}

}

}

void find_empty(x,y) /* 寻找虚拟环境中的空处,返回坐标 */

int *x,*y;

{

int ok;

ok=0;

while(ok==0)

{

*x=random(wx);*y=random(wy);

if(world[*x][*y]==0) ok=1;

}

}

void make_world() /* 随机设定人工环境 */

{

int i,j,k,num,x,y;

int ok,overlap;

char choice[3];

double size;

wx=0;

while(wx10||wxMAX_WX)

{

setcolor(15);

disp_hz16("虚拟环境长度(10-60)",10,210,20);

gscanf(300,210,4,0,3,"%s",choice);

wx=atoi(choice);

}

wy=0;

while(wy10||wyMAX_WY)

{

setcolor(15);

disp_hz16("虚拟环境宽度(10-32)",10,240,20);

gscanf(300,240,4,0,3,"%s",choice);

wy=atoi(choice);

}

for(i=0;iwy;i++)

for(j=0;jwx;j++)

if(i==0||i==wy-1||j==0||j==wx-1)

world[j] [ i]=4;

else world[j] [ i]=0;

/* 设定障碍物 */

size=(double)(wx*wy);

num=(int)(size/40.0);

if(numMAX_POP) num=MAX_POP;

for(i=0;inum;i++)

{

find_empty(x,y);

world[x][y]=4;

}

num=(int)(size/5.0);

if(numMAX_FOOD) num=MAX_FOOD;

for(i=0;inum;i++)

{

ok=0;

while(ok==0)

{

x=random(wx);y=random(wy);

if((world[x][y]!=4)

(world[x][y-1]==4 || world[x][y+1]==4 ||

world[x-1][y]==4 || world[x+1][y]==4))

{ world[x][y]=4;

ok=1;

}

}

}

for(y=0;ywy;y++)

for(x=0;xwx;x++)

if(world[x][y]==0)

{

num=0;

for(i=-1;i=1;i++)

for(j=-1;j=1;j++)

if(get_world(x+j,y+i)==4)

num++;

if(num=6) world[x][y]=4;

}

/* 设定生物 */

num=(int)(size*R_LIFE);

for(i=0;inum;i++)

{ find_empty(x,y);

world[x][y]=random(2)+1;

}

/* 设定食物 */

num=(int)(size*R_FOOD);

for(i=0;inum;i++)

{

find_empty(x,y);

world[x][y]=3;

}

}

void load_world_file() /* 读取虚拟环境数据文件设定 */

{

FILE *fopen(),*fpt;

char st[100],c;

int i,j;

if((fpt=fopen("\ga\world","r"))==NULL) exit(-1);

else

{

fscanf(fpt,"%d",wx);

fscanf(fpt,"%d",wy);

for(i=0;iwy;i++)

for(j=0;jwx;j++)

fscanf(fpt,"%d",world[j] [ i]);

fclose(fpt);

C语言试验题:将一个基因片段输入到一个字符型数组,然后计算这个数组中ATCG各字符的数量及所占比例

#include stdlib.h

#include stdio.h

#include string.h

void checkDNA( )

{

int index = 0;

int arr[4] = {0};

char buf[1024] = {0};

printf( "请输入DNA序列:\n" );

scanf( "%s", buf );

int len = strlen(buf);

for ( ; index len; index ++ )

{

switch( buf[index] )

{

case 'A':

arr[0] ++;

break;

case 'T':

arr[1] ++;

break;

case 'C':

arr[2] ++;

break;

case 'G':

arr[3] ++;

break;

}

}

int count = arr[0] + arr[1] + arr[2] + arr[3];

if ( count == 0 )

{

return;

}

for ( index = 0; index 4; index ++ )

{

char ch;

switch( index )

{

case 0:

ch = 'A';

break;

case 1:

ch = 'T';

break;

case 2:

ch = 'C';

break;

case 3:

ch = 'G';

break;

}

printf( "%c的数量:%d, 所占比例%d%%\n", ch, arr[index], arr[index]*100/count );

}

}

int main(int argc, _TCHAR* argv[])

{

checkDNA();

system( "pause" );

return 0;

}


网站名称:c语言基因函数,遗传算法c语言实现
链接地址:http://pwwzsj.com/article/dsescsj.html