• 大小: 157KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: 其他
  • 标签: 配套作业  

资源简介

配套之前上传的课件使用

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
#define maxVertexNumber 100010
struct Point
{
    double x[6];
}p[maxVertexNumber];
struct Edge
{
    int u v;
    double w;
}edge[maxVertexNumber];
int set[maxVertexNumber];
int size[maxVertexNumber];
int level[maxVertexNumber];
void Init(int n) {
    for(int i = 1; i <= n; i++) {
        set[i] = i;
        size[i] = 1;
        level[i] = -1;
    }
}
bool cmp(const Edge&A const Edge &B) {
    return A.w < B.w;
}
int Find(int id) {
    if(set[id] == id) {
        return id;
    }
    return set[id] = Find(set[id]);
}
void Union(int e1 int e2) {
    e1 = Find(e1);
    e2 = Find(e2);
    if(e1 == e2) {
        return ;
    }
    if(size[e1] > size[e2]) {
        set[e2] = set[e1];
        size[e1] += size[e2];
    } else {
        set[e1] = set[e2];
        size[e2] += size[e1];
    }
}
double get_Dis(int u int v) {
    double ret = 0.0;
    for(int i = 0; i < 6; i++) {
        ret += (p[u].x[i] - p[v].x[i]) * (p[u].x[i] - p[v].x[i]);
    }
    ret = sqrt(ret);
    return ret;
}
void Minimum_Spanning_Tree(int n int m) {
    Init(n);
    sort(edge + 1 edge + 1 + m cmp);
    int k = 0;
    for(int i = 1; i <= m; i++) {
        int u v w;
        u = edge[i].u;
        v = edge[i].v;
        w = edge[i].w;
        int su sv;
        su = Find(u);
        sv = Find(v);
        if(su == sv) {
            continue;
        }
        Union(su sv);
        k++;
        printf(“%d: “ k);
        if(level[su] == -1) {
            printf(“number %d and “ su);
        } else {
            printf(“level %d and “ level[su]);
        }
        if(level[sv] == -1) {
            printf(“number %d“ sv);
        } else {
            printf(“level %d“ level[sv]);
        }
        printf(“ belong to level %d: “ k);
        su = Find(su);
        level[su] = k;
        puts(““);
        if(k == n - 1) {
            break;
        }
    }
}
void System_Cluster(int n) {
    int m = 0;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            if(i == j) {
                continue;
            }
            m++;
            edge[m].u = i;
            edge[m].v = j;
            edge[m].w = get_Dis(i j);
        }
    }
    Minimum_Spanning_Tree(n m);
}
void HomeWork() {
    p[1].x[0] = 0;
    p[1].x[1] = 1;
    p[1].x[2] = 3;
    p[1].x[3] = 1;
    p[1].x[4] = 3;
    p[1].x[5] = 4;

    p[2].x[0] = 3;
    p[2].x[1] = 3;
    p[2].x[2] = 3;
    p[2].x[3] = 1;
    p[2].x[4] = 2;
    p[2].x[5] = 1;

    p[3].x[0] = 1;
    p[3].x[1] = 0;
    p[3].x[2] = 0;
    p[3].x[3] = 0;
    p[3].x[4] = 1;
    p[3].x[5] = 1;

    p[4].x[0] = 2;
    p[4].x[1] = 1;
    p[4].x[2] = 0;
    p[4].x[3] = 2;
    p[4

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3231  2014-11-12 00:03  模式识别作业\homework1.cpp

     文件       3270  2014-11-12 00:33  模式识别作业\homework2.cpp

     文件      59392  2014-11-12 00:01  模式识别作业\作业第一题.doc

     文件      67584  2014-11-12 00:35  模式识别作业\作业第二题.doc

     文件      86121  2014-11-13 00:32  模式识别作业\作业第二题.pdf

     目录          0  2014-11-13 00:32  模式识别作业

----------- ---------  ---------- -----  ----

               219598                    6


评论

共有 条评论

相关资源