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语言实现
本文URL:http://cdiso.cn/article/dsescsj.html