阅读背景:

数据挖掘-agnes算法_还我笑颜_数据挖掘agnes

来源:互联网 
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
vector<double> v[10010];
int n, k;
double average[10010]; 
int main() {
	cin >> n >> k;
	for(int i = 1; i <= n; i++) {
		cin >> average[i];
		v[i].push_back(average[i]);
	}
	double minn;
	int id1, id2;
	for(int t = 1; t <= n - k; t++) {
		minn = INF;
		for(int i = 1; i <= n; i++) {
			if(v[i].size() == 0) continue;
			for(int j = i + 1; j <= n; j++) {
				if(v[j].size() == 0) continue;
				if(fabs(average[i] - average[j]) < minn) {
					minn = fabs(average[i] - average[j]);
					id1 = i;
					id2 = j;
				}
			}
		}
		average[id1] = (1.0 * average[id1] * v[id1].size() + average[id2] * v[id2].size()) / (v[id1].size() + v[id2].size());
		for(int i = 0; i < v[id2].size(); i++) {
			v[id1].push_back(v[id2][i]);
		}
		v[id2].clear();
	}
	int i = 0;
	for(int j = 1; j <= n; j++) {
		if(v[j].size() == 0) continue;
		cout << ++i << ": ";
		for(int k = 0; k < v[j].size(); k++) cout << v[j][k] << " ";
		cout << endl;
	}
	return 0;
}
/*
8 2
1 2 3 4 5 6 7 8
7 3
5 1 3 6 7 5 9
*/#include <bits/stdc++.h>
using namespace std;
#



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: