⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 谱系聚类发.cpp

📁 智能控制在各个领域都有了重要作用
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#define row 5               //矢量的个数
#define date 6               //每个矢量的样本个数
void main()
{
double c,save_distance[100],q,saveadress[100];
long   sum=0,i,j,count,b,m,n=0,add_result,w=0,a[row][date],adress;
cout<<"******注意:"<<endl;
cout<<"      可以重新设定输入矢量的个数与每个矢量的样本数!"<<endl;
cout<<endl;
cout<<"输入矢量的个数:"<<row<<endl;
cout<<"输入每个矢量的样本个数:"<<date<<endl;
cout<<endl;
cout<<"请输入每个矢量的样本值:"<<endl;
/**********************************************************************************/
for(i=0;i<row;i++)                   //输入样本值
	{
	for(j=0;j<date;j++)
		cin>>a[i][j];
		cout<<";"<<endl;
		cout<<endl;
		if(i<row-1)
		cout<<"please input another date:"<<endl;
	}
cout<<"矢量的样本值输入完成!"<<endl;
/**********************************************************************************/
for(i=0;i<row;i++)                 //计算欧式距离
	{for(m=i+1;m<row;m++)
		{for(j=0;j<date;j++)
			{b=a[i][j]-a[m][j];
			 b=b*b;
			 sum=b+sum;
			 adress=(i+1)*10+m+1;
			}
			c=pow(sum,0.5);
			save_distance[n]=c;
		    saveadress[adress]=c;   //把计算的各个距离存入相应的哪两个矢量序号所组成的
			                        //saveadress中的地址中
			n++;
			sum=0;
		}
	}
/**********************************************************************************/
for(i=row-1;i>0;i--)               //计算有多少个数要输出!
{w=w+i;
add_result=w;
}
/**********************************************************************************/
cout<<endl;
cout<<"欧氏距离计算结果输出:"<<endl;
for(n=0;n<w;n++)
cout<<save_distance[n]<<";"<<endl;
/**********************************************************************************/
count=w-1;                          //从小到大排序
while(count)
{
for(n=0;n<w-1;n++)
	{
	if(save_distance[n]>=save_distance[n+1])
		{q=save_distance[n];
	     save_distance[n]=save_distance[n+1];
	     save_distance[n+1]=q;
		}
	}
   w--;                            //内层排序起泡法的循环次数
   count--;                        //外层循环次数
}
/**********************************************************************************/
w=add_result;
cout<<endl;
cout<<"矢量间欧氏距离计算后从小到大排序:"<<endl;
for(n=0;n<w;n++)
cout<<save_distance[n]<<";"<<endl;
/**********************************************************************************/
cout<<endl;
cout<<"聚类树从下到上结合方式 (矢量序号从1开始) :"<<endl;
for(i=0;i<w;i++) 
	{for(j=0;j<100;j++)
		{if(save_distance[i]==saveadress[j])
			{cout<<j<<";"<<endl;
			saveadress[j]=-1.0;
			}

		}
	}
}
/**********************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -