📄 direct_clustering.java~53~
字号:
package fuzzy_project;
class Direct_Clustering {
private int row;
private int col;
private int count;
private int p;
private byte cut_Matrix[][];
private int Clustering_result[][];
private int length[]; //记录二维数组Clustering_result中每行非零元素的个数
private byte visited[];
private String result;
public Direct_Clustering(byte arrary[][],int r,int c)
{
cut_Matrix=arrary;
row=r;
col=c;
count=0;
Clustering_result=new int[r][c];
length=new int[c];
visited=new byte[r+1];
result="#";
}
public String exe()
{
for(int i=0;i<row;i++) //遍历截矩阵,又由于截矩阵是对称矩阵,所以只遍历上三角矩阵元素
{
for (int j = i; j < col; j++)
{
if (cut_Matrix[i][j] == 1)
{
Clustering_result[i][count++]=j+1;
}
}
count=0;
}
for(int i=0;i<row;i++) //记录二维数组Clustering_result中每行非零元素的个数
{
for (int j=0;j<col;j++)
{
if (Clustering_result[i][j]!=0)
{
count++;
}
}
length[i]=count; //length[i]的值代表二维数组Clustering_result中第i行的非零元素个数
count=0;
}
for(int x=0;x<row;x++) //生成邻接矩阵
for(int y=1;y<length[x];y++)
{
if(Clustering_result[x][y]>Clustering_result[x][0])
{
Clustering_result[Clustering_result[x][y]-1][length[Clustering_result[x][y]-1]]=Clustering_result[x][0];
length[Clustering_result[x][y]-1]++;
}
}
for(int i=1;i<=5;i++)
{
if(visited[i]==0)
{
dfs(Clustering_result, i, i - 1, 0); //调用图的遍历函数
result=result+"#";
}
}
return result;
}
private void dfs(int cr[][],int v,int x,int y) //基于邻接表的图深度遍历实现
{
visited[v]=1;
result=result+v+",";
p=cr[x][++y];
while(p!=0)
{
if(visited[p]==0)
{
dfs(cr, p, p - 1, 0);
}
if(y<col-1)
{
p=cr[x][++y];
}
else
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -