亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmfunc.c

?? 《C程序員成長攻略》-黎陡-源代碼,書中所有源碼
?? C
字號:
/*---------------------------DMFunc.c-----------------------------------*/
/*-----------算法相關函數----------*/
/*-----------求和--------------*/
float Sigama(float a[],int L)
{  
  /*------求得數組a[]中從下標0到L-1的元素之和。函數返回該和值-----*/
   int i;
   float temp=0;
   for(i=0;i<L;i++)
     temp+=a[i];
   return temp;
}

/*-----------求最大值--------*/
float findMax(float a[],int L)
{ 
  /*求得數組a[]中從下標0到L-1各元素的最大值。函數返回該最大值*/
  int i;
  float temp;
  for(i=0;i<L-1;i++) /*冒泡排序一輪將各元素的最大值交換到a[L-1]中*/
    if(a[i]>a[i+1])
       {  temp=a[i];
	      a[i]=a[i+1];
	      a[i+1]=temp;
       }
  return a[L-1];    /*----返回最大值----*/
}

/*------------求最小值--------*/
float findMin(float a[],int L)
{ 
  int i;
  float temp;
  for(i=0;i<L-1;i++) /*--冒泡排序一輪將各元素的最大值交換到a[L-1]中---*/
    if(a[i]<a[i+1])
       {  
          temp=a[i];
	      a[i]=a[i+1];
	      a[i+1]=temp;
       }
  return a[L-1];
}

/*--------------對各個方案的貼近度和距離進行排序------------------*/
void Taxis(struct Target Tank[],int pNum)
{ /*----在定義的結構struct Target中定義了指示當前方案的貼近度和距離在各個方案中按大小排序所得到的序號TIndex和dIndex。此函數將各方案的TIndex和dIndex分別進行排序,得到其相應的排序號----*/
  int i,j;
  for(i=0;i<pNum;i++)
/*從第一個開始,將第i個和第i+1個進行比較,若i的距離(或貼近度)大,*/
   for(j=i+1;j<pNum;j++)
/* 則i的距離序號(或貼近度序號)加1,否則,i+1的距離序號-*/
   {                        /*-(或貼近度序號)加1-------------*/
    if(Tank[i].d>Tank[j].d)
      Tank[i].dIndex++;
    else 
      Tank[j].dIndex++;
    if(Tank[i].T>Tank[j].T)
      Tank[i].TIndex++;
    else 
      Tank[j].TIndex++;
   }
}

/*-----------獲得當前各輛坦克的指標數據---------------------*/
void GetTData()
{
  int i,d=40;
  float x,y;
  for(i=0;i<n;i++)
  {
     x=Tank[i].x;
     y=Tank[i].y;
     Tank[i].distance=sqrt((x-emp.x)*(x-emp.y)+(y-emp.y)*(y-emp.y));
     Tank[i].distance=1-Tank[i].distance/1000;  /*求得距離的指標*/
     switch(Tank[i].color)         /*根據目標顏色確定其攻擊力值*/
     {
	 case WHITE:
	      Tank[i].power=0.5;
	      break;
	 case YELLOW:
	      Tank[i].power=0.6;
	      break;
	 case RED:
	      Tank[i].power=0.7;
	      break;
     }
     switch(Tank[i].direction)    /*根據目標當前方向值來定量*/
     {
	 case 1:  /*方向為右時*/  
	     if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth)
/*如果目標位于大本營水平左側*/
		Tank[i].inva=0.9; 
             else
	     if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth)
/*如果目標位于大本營水平右側*/
                Tank[i].inva=0.7;
             else
if(Tank[i].y<emp.y-emp.lenth && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于大本營上沿寬度為二倍坦克直徑的水平區域帶*/
                Tank[i].inva=0.7;
	     else
                Tank[i].inva=0.5; /*目標位于其他區域*/
             break;
	 case -1: /*方向為左時*/
	     if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth)
/*如果目標位于大本營水平右側*/
		Tank[i].inva=0.9;
             else
	     if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth)
/*如果目標位于大本營水平左側*/
                Tank[i].inva=0.7;
             else 
      if(Tank[i].y<emp.y-emp.lenth && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于大本營上沿寬度為二倍坦克直徑的水平區域帶*/ 
                Tank[i].inva=0.7;
	     else
		Tank[i].inva=0.5; /*目標位于其他區域*/
	     break;
	 case 2:  /*方向為下時*/
	     if(Tank[i].x<emp.x-emp.width && Tank[i].x>emp.x+emp.width)
/*如果目標位于大本營正上方*/
		Tank[i].inva=0.9;
	     else 
		Tank[i].inva=0.6; /*目標位于其他區域*/
	     break;
	 case -2: /*方向為上時*/
	     if(Tank[i].x<emp.x-emp.width && Tank[i].x>emp.x+emp.width)
/*如果目標位于大本營正上方*/
		Tank[i].inva=0.7; 
	     else
		Tank[i].inva=0.1; /*目標位于其他區域*/
	     break;
	 case 3:  /*方向為右下時*/
      if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的左側水平帶*/
	        Tank[i].inva=0.8;
             else 
	  if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的右側水平帶*/
                Tank[i].inva=0.6;
             else
		Tank[i].inva=0.4; /*目標位于其他區域*/
	     break;
	 case -3: /*方向為左上時*/
      if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r) 
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的右側水平帶*/
	        Tank[i].inva=0.8;
             else
	 if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的左側水平帶*/
                Tank[i].inva=0.6;
             else
		Tank[i].inva=0.1; /*目標位于其他區域*/
	     break;
	 case 4:  /*方向為右上時*/
	  if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的左側水平帶*/
	        Tank[i].inva=0.8;
             else 
	  if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的右側水平帶*/
                Tank[i].inva=0.6;
             else
		Tank[i].inva=0.1; /*目標位于其他區域*/
	     break;
	 case -4: /*方向為左下時*/
	  if(Tank[i].x>emp.x+emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r) 
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的右側水平帶*/
	        Tank[i].inva=0.8;
             else
	 if(Tank[i].x<emp.x-emp.width && Tank[i].y>emp.y-emp.lenth-4*Tank[i].r)
/*如果目標位于從距大本營上沿為二倍坦克直徑處到演示框低部的左側水平帶*/
                Tank[i].inva=0.6;
             else
		Tank[i].inva=0.4; /*目標位于其他區域*/
	     break;
     }
  }
}

/*-----------第一步:構造初始指標判斷矩陣----------------------------*/
void FormMatrix()
{ int i,j;
  float temp[mMax][nMax]={{0.3,0.9,0.5,0.9},
			  {0.1,0.8,0.4,0.7},
			  {0.5,0.9,0.6,0.3}};
  GetTData();
  for(j=0;j<n;j++)
  {
   r[0][j]=Tank[j].distance;
   r[1][j]=Tank[j].inva;
   r[2][j]=Tank[j].power;
  }
  /*for(i=0;i<m;i++)
  {  
     for(j=0;j<n;j++)
       cprintf("%8.4f",r[i][j]);
     cprintf("\n");
   }*/
}

/*-----------第二步:構造加熵權的標準化指標矩陣A---------------------*/
void FormEntropyMatrix()
{  
   int i,j;
   float temp=0,k;
   k=1/log(n);
  for(i=0;i<m;i++)
  {
    for(j=0;j<n;j++)
   { 
     if(Sigama(&r[i][0],n)==0)
     f[i][j]=0;
     f[i][j]=r[i][j]/Sigama(&r[i][0],n);
     temp+=f[i][j]*log(f[i][j]);
   }
    H[i]=0-k*temp;
    temp=0;
  }
  for(i=0;i<m;i++)
  Omiga[i]=(1-H[i])/(m-Sigama(&H[0],m));

  for(i=0;i<m;i++)
    for(j=0;j<n;j++)
      A[i][j]=Omiga[i]*r[i][j];

}

/*-----------第三步:找出理想點X[m]----------------*/
void FindPerfectPoint()
{ 
  float a[mMax][nMax];
  int i,j;
  for(i=0;i<m;i++)
    for(j=0;j<n;j++)
      a[i][j]=A[i][j];
  for(i=0;i<m;i++)
    X[i]=findMax(&a[i][0],n);
}

/*-----------第四步:計算被評方案到理想點的距離Tank[j].d-----------------*/
void CalDistance()
{ 
  int i,j;
  float sigama=0;
  for(j=0;j<n;j++)
  {  
     for(i=0;i<m;i++)
     sigama+=(A[i][j]-X[i])*(A[i][j]-X[i]);
     Tank[j].d=sqrt(sigama);
     sigama=0;
   }
}

/*-----------第五步:計算被評方案與理想點的貼近度Tank[j].T---------------*/
void CalCloseDegree()
{  
   int i,j;
   float sigama1=0,sigama2=0;
   for(j=0;j<n;j++)
    { 
      for(i=0;i<m;i++)
      { 
        sigama1+=A[i][j]*X[i];
	    sigama2+=X[i]*X[i];
       }
      Tank[j].T=1-sigama1/sigama2;
      sigama1=0;
      sigama2=0;
    }
}

/*-----------第六步:根據貼近度和距離排序,找出最優目標---------*/
void FindBestT()
{ 
  int i,j,best_flag,second_flag;
  struct Target temp;
  best=0;
  for(i=0;i<n;i++)
  { 
     Tank[i].dIndex=Tank[i].TIndex=1;
     Tank[i].pIndex=1;
  }
  Taxis(&Tank[0],n);/*--------將貼近度和距離排序----------------*/
  for(i=0;i<n;i++)  /*---按貼近度將各方案進行排序--------*/
  { 
     for(j=i+1;j<n;j++)
     { 
        if(Tank[i].TIndex>Tank[j].TIndex)
	    {    
           Tank[i].pIndex++;
	     }
	    else 
          if(Tank[i].TIndex==Tank[j].TIndex)
/*--若貼近度相同則比較距離------*/
	        if(Tank[i].dIndex>Tank[j].dIndex)
		    { 
               Tank[i].pIndex++;
		    }
	       else 
               Tank[j].pIndex++;
	else
       if(Tank[i].TIndex<Tank[j].TIndex)
	     Tank[j].pIndex++;
	}
   }

  for(i=0;i<n;i++)
  {
     if(Tank[i].pIndex==1)
	{
	   best=i;       /*--------找出最優方案,獲得其方案序號---------*/
	   best_flag=1;
	   break;
	}
  }
}

/*--------------------------------------------------------------*/
void Arithmetic()
{
    if(n==1)
    {
       best=0;
       return;
    }
    FormMatrix();
    FormEntropyMatrix();
    FindPerfectPoint();
    CalDistance();
    CalCloseDegree();
    FindBestT();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一二三四区精品视频| 日韩码欧中文字| 欧美无乱码久久久免费午夜一区| 国产不卡视频一区| 国产成人亚洲精品青草天美| 精品一区二区av| 国产尤物一区二区| 国产乱人伦精品一区二区在线观看| 热久久国产精品| 精品一区二区精品| 国产91综合网| 成人aaaa免费全部观看| 91片黄在线观看| 欧美少妇bbb| 日韩一级完整毛片| wwwwxxxxx欧美| 中文字幕免费不卡| 亚洲欧美日韩国产综合在线| 亚洲精品免费在线| 欧美a一区二区| 国产伦精品一区二区三区在线观看| 国产成人夜色高潮福利影视| 99久久伊人久久99| 7777精品伊人久久久大香线蕉完整版 | 亚洲大片精品永久免费| 奇米精品一区二区三区四区 | 国产精品色呦呦| 亚洲乱码国产乱码精品精小说 | 日韩免费视频线观看| 欧美精品一区二区三区高清aⅴ | 午夜伦欧美伦电影理论片| 日韩国产欧美视频| jlzzjlzz欧美大全| 91精品久久久久久蜜臀| 国产精品视频在线看| 亚洲国产成人高清精品| 国产一区二区三区四| 日本韩国一区二区三区| 日韩精品一区二区在线| 国产精品久久久久久妇女6080 | 欧美大片拔萝卜| 亚洲视频免费观看| 久久精品久久99精品久久| 色综合天天综合色综合av| 5858s免费视频成人| 国产精品欧美极品| 久久精品国产成人一区二区三区 | 极品少妇xxxx精品少妇偷拍| 福利一区福利二区| 亚洲综合色婷婷| 国产一级精品在线| 制服.丝袜.亚洲.中文.综合| 中文字幕在线不卡| 激情另类小说区图片区视频区| 色欧美片视频在线观看| 久久夜色精品一区| 久久国产欧美日韩精品| 欧美撒尿777hd撒尿| 国产精品大尺度| 精品午夜久久福利影院| 欧美挠脚心视频网站| 一区二区三区在线观看欧美| 成人一区在线观看| 国产亚洲欧美日韩日本| 激情文学综合插| 欧美精品v国产精品v日韩精品 | 中文字幕欧美国产| 久久99精品久久久| 2021久久国产精品不只是精品| 日韩电影在线免费观看| 欧美乱熟臀69xxxxxx| 亚洲一区二区美女| 欧美日韩不卡在线| 日韩精品乱码免费| 91麻豆精品国产自产在线| 午夜精品久久久久久| 欧美群妇大交群的观看方式| 亚洲gay无套男同| 欧美日韩一区二区在线观看 | 国产色综合久久| 国产美女av一区二区三区| 欧美哺乳videos| 精品无人区卡一卡二卡三乱码免费卡| 91精品国产综合久久福利软件| 亚洲国产精品嫩草影院| 欧美日韩成人激情| 玖玖九九国产精品| 中文字幕成人av| 97久久精品人人澡人人爽| 亚洲激情图片一区| 欧美丰满少妇xxxbbb| 久久99精品久久久| 国产精品毛片久久久久久| 91麻豆国产在线观看| 亚洲国产精品久久久久秋霞影院 | 久久综合av免费| 国产成人在线影院 | 欧美日韩免费观看一区二区三区| 亚洲成人www| 欧美不卡在线视频| 成人国产免费视频| 香港成人在线视频| 久久久久久久综合日本| 91亚洲精品久久久蜜桃网站| 亚洲观看高清完整版在线观看| 日韩一区二区在线播放| 国产成人精品在线看| 一区二区三区四区蜜桃| 日韩欧美久久久| 成人一道本在线| 日韩精品亚洲一区二区三区免费| 一区二区三区免费看视频| 在线播放/欧美激情| 成人毛片视频在线观看| 调教+趴+乳夹+国产+精品| 国产欧美日韩在线观看| 欧美性猛交xxxx乱大交退制版 | 蜜桃一区二区三区在线| 综合在线观看色| 亚洲精品一区二区三区影院| 一本一道波多野结衣一区二区| 久久精品久久综合| 亚洲大片在线观看| 亚洲色图欧美在线| 337p日本欧洲亚洲大胆精品| 欧美亚洲高清一区| 成人免费黄色大片| 久久福利资源站| 亚洲国产一二三| 国产人成一区二区三区影院| 欧美肥妇bbw| 色哟哟亚洲精品| 成人午夜在线免费| 精品在线免费观看| 日韩高清不卡在线| 亚洲综合区在线| 亚洲免费在线视频| ...av二区三区久久精品| 久久欧美一区二区| 亚洲在线成人精品| 亚洲视频 欧洲视频| 国产网站一区二区三区| 欧美大片在线观看| 欧美精品三级日韩久久| 欧美亚洲日本国产| 色综合久久99| 欧美伊人久久久久久久久影院| 成人听书哪个软件好| 国产成人精品亚洲777人妖| 麻豆成人久久精品二区三区红| 亚洲午夜私人影院| 亚洲一区在线视频| 亚洲一区二区欧美日韩| 性久久久久久久久| 人人超碰91尤物精品国产| 欧美a级一区二区| 毛片基地黄久久久久久天堂| 蜜臀99久久精品久久久久久软件| 强制捆绑调教一区二区| 青青草一区二区三区| 美国一区二区三区在线播放| 久久精品久久精品| 粉嫩久久99精品久久久久久夜| 国产高清久久久| 成人听书哪个软件好| 色综合色狠狠天天综合色| 欧美在线看片a免费观看| 欧美日本一道本在线视频| 91精品国产乱| 精品国免费一区二区三区| 国产日韩高清在线| 亚洲欧美在线视频| 午夜精品久久久| 久久国产日韩欧美精品| 成人午夜免费视频| 在线一区二区三区做爰视频网站| 欧美日韩电影在线播放| 精品久久久久av影院 | 色素色在线综合| 91精品在线免费| 久久亚洲捆绑美女| 亚洲精品国产一区二区三区四区在线| 亚洲一区精品在线| 国内成+人亚洲+欧美+综合在线| 成人一级片在线观看| 欧美日韩高清影院| 国产精品素人视频| 亚洲成人免费影院| 国产成人精品影视| 欧美三区在线观看| 久久免费电影网| 性做久久久久久免费观看 | 中文字幕色av一区二区三区| 亚洲国产美国国产综合一区二区| 韩国成人精品a∨在线观看| 99国产一区二区三精品乱码| 日韩午夜激情免费电影| 中文字幕中文字幕一区二区 | 亚洲人成人一区二区在线观看| 日韩av成人高清|