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

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

?? my dumpling.cpp

?? 一種基于網絡節點距離(節點間RTT值)
?? CPP
字號:
#include <stdio.h>#include <iostream.h>#include <vector>#include <algorithm>#include <stdlib.h>  #include <time.h>   
#include <fstream>using   namespace   std;   #define CLUSTERRADIUS 30#define ROOT 2#define NORMAL 1#define NOTINITIALED 0//int nodeStatus[1000];vector<vector<float> > nodeInfo(1000,vector<float>(0));int nodeCount = 0;int rootCount = 0;float avgDistance[1000];float x = 0.000;
void Display()//輸出每個節點的聚類信息{
	ofstream   outFile;
	outFile.open("D:\\研究生\\dumpling\\out.txt",ios::out);	//rootCount = 0;	for( int k = 0 ; k < 1000 ; k++ )		avgDistance[k] = 0;		/*for(int a = 0 ; a < nodeCount ; a++)	{		cout<<nodeInfo[a][0]<<"  ";	}*/	cout<<endl;    cout<<"*******************************************************************************"<<endl;	for(int b = 0 ; b < nodeCount ; b++)	{		cout<<b<<"           ";		for(int c = 0 ; c < nodeInfo[b].size() ; c++)
		{
			if(c == 0)
			{
				if(nodeInfo[b][c] == ROOT)
					cout<<"R"<<"           ";
				else if(nodeInfo[b][c] == NORMAL)
					cout<<"N"<<"           ";
			}
			else				cout<<nodeInfo[b][c]<<"           ";
		}		cout<<endl;	}	    cout<<"*******************************************************************************"<<endl;	for(int e = 0 ; e < nodeCount ; e++)	{		if(nodeInfo[e][0] == ROOT)		{			float sum = 0;			//rootCount++;			for(int t = 2 ; t <  nodeInfo[e].size() ; t++)				sum = sum + nodeInfo[nodeInfo[e][t]][1];						if(nodeInfo[e].size() > 2)//非孤島節點				avgDistance[e] = sum/(nodeInfo[e].size() - 2);		}			}
	cout<<"系統中共有 "<<rootCount<<" 個聚類"<<endl;	cout<<"每個聚類根節點以及聚類節點平均距離信息如下:"<<endl;	cout<<"根節點ID"<<"      平均距離"<<endl;	for(int h = 0 ; h < nodeCount ; h++)	{
		//int decimal, sign;  
		char avgDst[10];
		char rID[10];
		for(int i = 0 ; i < 10 ; i++)
		{
			avgDst[i] = NULL;
			rID[i] = NULL;
		}
		gcvt(avgDistance[h],8,avgDst);
		//avgDst = _fcvt( avgDistance[h], 7, &decimal, &sign ); 
		//cout<<"*****"<<avgDst<<"*****"<<endl;
		itoa(h,rID,10);		if(nodeInfo[h].size() == 2)
		{			cout<<"   "<<h<<"          "<<avgDistance[h]<<endl;
			outFile.write(rID,sizeof(rID)); 
			outFile.write(avgDst,sizeof(avgDst));
			outFile.write("\n",1);
		}		else if(avgDistance[h] != 0)
		{
			cout<<"   "<<h<<"          "<<avgDistance[h]<<endl;
            outFile.write(rID,sizeof(rID)); 
			outFile.write(avgDst,sizeof(avgDst));
			outFile.write("\n",1);
		}	}	cout<<"*******************************************************************************"<<endl;}void main(){    FILE *file;	int ID1,ID2;	float radius;
	ofstream   rootCountFile;
	int w = 1;
	
	rootCountFile.open("D:\\研究生\\dumpling\\rootCount.txt",ios::out);
	cout<<"請輸入網絡中的節點個數:";
	cin>>nodeCount;
    for( int k = 0 ; k < nodeCount ; k++ )	{		nodeInfo[k].push_back(0);		//avgDistance[k] = 0;	}	if ((file = fopen("D:\\研究生\\dumpling\\nodetest.txt","r") ) == NULL)	{		cout<<"error"<<endl;	    fclose(file);  		return;	}     
	//outFile.write("第一次循環中每讀取一行rootCount數的變化:\n",sizeof("第一次循環中每讀取一行rootCount數的變化:\n")); 
	//第一個循環,消除未分配節點,初步聚類形成	for( long i = 0 ; i < (nodeCount*(nodeCount-1)/2 ) ; i++)	{		fscanf(file,"%d",&ID1);		fscanf(file,"%d",&ID2);		fscanf(file,"%f",&radius);		x = x + radius;			//兩個節點均未分配		if((nodeInfo[ID1][0] == NOTINITIALED)&&(nodeInfo[ID2][0] == NOTINITIALED) )		{			if(radius <= CLUSTERRADIUS)			{
				rootCount++;				nodeInfo[ID1][0] = ROOT;				nodeInfo[ID1].push_back(0);				nodeInfo[ID1].push_back(ID2);					nodeInfo[ID2][0] = NORMAL;				nodeInfo[ID2].push_back(radius);				nodeInfo[ID2].push_back(ID1);   			}						}//end of 兩個節點均未初始化			//一個為根節點,一個為未分配節點	    else if(((nodeInfo[ID1][0] == ROOT)&&(nodeInfo[ID2][0] == NOTINITIALED))				||((nodeInfo[ID2][0] == ROOT)&&(nodeInfo[ID1][0] == NOTINITIALED)))		{			int t = ID1;			if(nodeInfo[ID2][0] == ROOT)			{				ID1 = ID2;				ID2 = t;			}			if((radius <= CLUSTERRADIUS))			{				nodeInfo[ID1].push_back(ID2);					nodeInfo[ID2][0] = NORMAL;				nodeInfo[ID2].push_back(radius);				nodeInfo[ID2].push_back(ID1);			}		}			//一個為普通節點,一個為未分配節點		else if(((nodeInfo[ID1][0] == NORMAL)&&(nodeInfo[ID2][0] == NOTINITIALED))				  ||((nodeInfo[ID2][0] == NORMAL)&&(nodeInfo[ID1][0] == NOTINITIALED)))		{			int t = ID1;			if(nodeInfo[ID2][0] == NORMAL)			{				ID1 = ID2;				ID2 = t;			}			if(((radius + nodeInfo[ID1][1]) <= CLUSTERRADIUS))			{					 //cout<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl<<ID1<<"     "<<ID2<<endl;				nodeInfo[nodeInfo[ID1][2]].push_back(ID2);					nodeInfo[ID2][0] = NORMAL;				nodeInfo[ID2].push_back(radius + nodeInfo[ID1][1]);				nodeInfo[ID2].push_back(nodeInfo[ID1][2]);			}						}
			
		char hc[10];//記錄當前讀取節點文件的行數
		char rc[10];//記錄每讀取一行后,rootCount數的變化
		
		for(int j = 0 ; j < 10 ; j++)
		{
			rc[j] = NULL;
			hc[j] = NULL;
		}
			
		itoa(i,hc,10);
		itoa(rootCount,rc,10);
            
		if(i == 0)
		{
			rootCountFile.write(hc,sizeof(hc));
			rootCountFile.write(rc,sizeof(rc));
			rootCountFile.write("\n",1);
		}
			//cout<<hc<<"******"<<rc<<endl;
		else if(i/w == 1000)
		{
				//itoa(i/40,hc,10);
			rootCountFile.write(hc,sizeof(hc));
			rootCountFile.write(rc,sizeof(rc));
			rootCountFile.write("\n",1);
			w++;
		}	}//end of for    	//文件第一遍掃描完畢后仍有節點是未分配狀態,將其設置為根節點,為孤島	for(int m = 0; m < nodeCount ; m++)	{		if(nodeInfo[m][0] == NOTINITIALED)		{			nodeInfo[m][0] = ROOT;			nodeInfo[m].push_back(0);
			rootCount++;		}	}	cout<<endl<<"第一次循環"<<endl;    Display();    fclose(file);    if ((file = fopen("D:\\研究生\\dumpling\\nodetest.txt","r") ) == NULL)	{		cout<<"error"<<endl;	    fclose(file);  		return;	} 	    /*vector<int> randomNumber;//存放隨機整數    srand(   (unsigned)time(   NULL   )   );       for(int l = 0 ; l < nodeCount*(nodeCount-1)/4 ; l++)   	{        randomNumber.push_back(rand()%(nodeCount*(nodeCount-1)/2));        //printf(   "     %6d\n",   rand()%nodeCount   ); 	}*/	
	//outFile.write("\n第二次循環中每讀取一行rootCount數的變化:\n",sizeof("第二次循環中每讀取一行rootCount數的變化:\n")); 

	//第二個循環,優化聚類
	for( long n = 0 ; n < (nodeCount*(nodeCount-1)/2 ) ; n++)	//for( int n = 0 ; n <  (nodeCount*(nodeCount-1)/4 ); n++)	{		//for(int u = 0 ; u < randomNumber[n] ; u++)		//{		fscanf(file,"%d",&ID1);		fscanf(file,"%d",&ID2);		fscanf(file,"%f",&radius);		//}        //cout<<endl<<ID1<<"     "<<ID2<<endl;		//根節點遇到不同聚類中的普通節點		if(((nodeInfo[ID1][0] == NORMAL)&&(nodeInfo[ID2][0] == ROOT))		   ||((nodeInfo[ID2][0] == ROOT)&&(nodeInfo[ID1][0] == NORMAL)))		{//cout<<"111111111111111111111111111"<<endl<<ID1<<"     "<<ID2<<endl;			int t = ID1;			if(nodeInfo[ID2][0] == ROOT)			{				ID1 = ID2;				ID2 = t;			}			if(nodeInfo[ID2][1] > radius)			{//cout<<"222222222222222222222222"<<endl<<ID1<<"     "<<ID2<<endl;				nodeInfo[ID1].push_back(ID2);				int t = nodeInfo[ID2][2];				nodeInfo[t].erase(remove(nodeInfo[t].begin(),nodeInfo[t].end(),ID2),nodeInfo[t].end());				nodeInfo[ID2][1] = radius;				nodeInfo[ID2][2] = ID1;			}		}        //兩個普通節點相遇,無論是否屬于同一聚類		//若有跨過另一普通節點到某根的距離比現狀更近的情況		//則加入另一聚類,或者更新在本聚類到根的距離信息		/*else if((nodeStatus[ID1] == NORMAL)&&(nodeStatus[ID2] == NORMAL))		{			if(((radius + nodeInfo[ID1][0]) < nodeInfo[ID2][0]))			{cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl<<ID1<<"     "<<ID2<<endl;			cout<<nodeInfo[ID1][1]<<endl;			cout<<nodeInfo[ID2][1]<<endl;				nodeInfo[nodeInfo[ID1][1]].push_back(ID2);//這步為什么沒做???					nodeInfo[ID2][0] = radius + nodeInfo[ID1][0];				nodeInfo[ID2][1] = nodeInfo[ID1][1];                int t = nodeInfo[ID2][1];				////這步為什么沒做???				nodeInfo[t].erase(remove(nodeInfo[t].begin(),nodeInfo[t].end(),ID2),nodeInfo[t].end());			}			else if(((radius + nodeInfo[ID2][0]) < nodeInfo[ID1][0]))			{cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"<<endl<<ID1<<"     "<<ID2<<endl;				nodeInfo[nodeInfo[ID2][1]].push_back(ID1);					nodeInfo[ID1][0] = radius + nodeInfo[ID2][0];				nodeInfo[ID1][1] = nodeInfo[ID2][1];				int t = nodeInfo[ID1][1];				nodeInfo[t].erase(remove(nodeInfo[t].begin(),nodeInfo[t].end(),ID2),nodeInfo[t].end());			}		}*/        		//兩個均為根節點		else if((nodeInfo[ID1][0] == ROOT)&&(nodeInfo[ID2][0] == ROOT))		{//cout<<"333333333333333333333333333333333"<<endl<<ID1<<"     "<<ID2<<endl;			//兩個均為孤島節點			if((nodeInfo[ID1].size() == 2)&&(nodeInfo[ID2].size() == 2)) 				if(radius < CLUSTERRADIUS)				{//cout<<"444444444444444444444444444444444"<<endl<<ID1<<"     "<<ID2<<endl;					nodeInfo[ID2][0] = NORMAL;					nodeInfo[ID2][1] = radius;					nodeInfo[ID2].push_back(ID1);
					rootCount--;				}            //有一個是孤島節點			else if((nodeInfo[ID1].size() == 2)||(nodeInfo[ID2].size() == 2))			{//cout<<"555555555555555555555555555555555555555"<<endl<<ID1<<"     "<<ID2<<endl;				int t = ID1;				if(nodeInfo[ID1].size() == 2)				{					ID1 = ID2;					ID2 = t;				}				if(radius < CLUSTERRADIUS)				{//cout<<"666666666666666666666666666666666666666"<<endl<<ID1<<"     "<<ID2<<endl;					nodeInfo[ID2][0] = NORMAL;					nodeInfo[ID2][1] = radius;					nodeInfo[ID2].push_back(ID1);
					rootCount--;				}			}			//兩個均為非孤島根節點			else if((nodeInfo[ID1].size() > 1)&&(nodeInfo[ID2].size() > 1))			{}		}

		/*for(int j = 0 ; j < 7 ; j++)
			rc[j] = NULL;
		itoa(rootCount,rc,10);
		outFile.write(rc,sizeof(rc));*/	}//end of for		cout<<endl<<"第二次循環"<<endl;    Display();
	cout<<"兩節點間平均距離為:"<<(x/(nodeCount*(nodeCount-1)/2 ))<<endl;

	cout<<"各根節點包含普通節點數目信息:"<<endl;
	for(int v = 0 ; v < nodeCount ; v ++)
	{
		if(nodeInfo[v][0] == ROOT)
			cout<<v<<"    "<<(nodeInfo[v].size() - 2)<<endl;
	}    fclose(file);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色噜噜| 色美美综合视频| 欧美一级片免费看| 亚洲国产精品成人久久综合一区| 日韩中文欧美在线| 欧美日韩精品久久久| 亚洲一区自拍偷拍| 欧美日韩日日夜夜| 日韩精品福利网| 337p亚洲精品色噜噜噜| 石原莉奈在线亚洲二区| 在线观看亚洲一区| 亚洲午夜免费电影| 91精品国产乱码久久蜜臀| 日韩电影在线免费| 日韩免费电影网站| 国产精品资源网站| 国产精品欧美一区喷水| 91看片淫黄大片一级在线观看| 一级精品视频在线观看宜春院 | 91精品国产91热久久久做人人| 亚洲五月六月丁香激情| 日韩一区二区免费视频| 午夜电影网一区| 欧美大片拔萝卜| 国产精品一区二区黑丝| 最新高清无码专区| 欧美理论电影在线| 久久99精品一区二区三区三区| 国产日本一区二区| 91看片淫黄大片一级| 亚瑟在线精品视频| 久久久影视传媒| 色素色在线综合| 亚洲伊人色欲综合网| 欧美在线免费观看亚洲| 麻豆91在线观看| 久久午夜色播影院免费高清| 成人深夜福利app| 一区二区三区中文字幕精品精品| 在线播放欧美女士性生活| 国产成人综合在线观看| 亚洲素人一区二区| 日韩亚洲欧美一区| 成人黄色电影在线| 天堂午夜影视日韩欧美一区二区| 久久综合九色综合久久久精品综合| av一本久道久久综合久久鬼色| 午夜私人影院久久久久| 国产日韩欧美电影| 不卡高清视频专区| 人人爽香蕉精品| 亚洲欧美在线另类| 日韩欧美中文字幕精品| av中文字幕在线不卡| 理论电影国产精品| 一区二区三区**美女毛片| 欧美va日韩va| 91在线免费播放| 激情成人午夜视频| 亚洲福利一区二区| 国产精品麻豆一区二区| 日韩免费高清av| 欧美视频在线播放| 成人国产免费视频| 久久99精品国产麻豆婷婷| 亚洲国产成人av好男人在线观看| 亚洲精品一线二线三线| 欧美喷潮久久久xxxxx| 91免费视频网址| 成人精品视频网站| 久久99久久久欧美国产| 亚洲123区在线观看| 国产亚洲污的网站| 26uuu精品一区二区| 在线电影国产精品| 欧美色中文字幕| 色又黄又爽网站www久久| 大陆成人av片| 国产精品中文欧美| 国精产品一区一区三区mba视频| 亚洲乱码国产乱码精品精小说| 国产欧美精品一区二区色综合朱莉| 欧美一区二区精品久久911| 在线亚洲人成电影网站色www| 丰满白嫩尤物一区二区| 国产精品中文字幕欧美| 国产一区二区主播在线| 日韩电影免费在线| 石原莉奈一区二区三区在线观看| 亚洲精品水蜜桃| 亚洲精品v日韩精品| 亚洲另类春色校园小说| 亚洲美女区一区| 国产三级精品视频| 精品1区2区在线观看| 日韩精品一区二区三区swag| 日韩欧美中文一区二区| 欧美成人女星排名| 日韩精品最新网址| 久久综合国产精品| 久久综合久久综合久久综合| 欧美精品一区男女天堂| 国产午夜精品一区二区三区视频| 久久这里都是精品| 欧美激情在线一区二区| 国产精品高潮久久久久无| 中文字幕亚洲一区二区va在线| 国产精品毛片高清在线完整版| 国产精品免费av| 亚洲精品视频观看| 午夜亚洲福利老司机| 亚洲国产精品天堂| 久久国产精品免费| 国产精品亚洲视频| 91在线精品一区二区| 欧美午夜理伦三级在线观看| 欧美区视频在线观看| 精品国产sm最大网站免费看| 久久综合999| 亚洲激情在线播放| 丝袜美腿亚洲色图| 激情综合色丁香一区二区| 国产+成+人+亚洲欧洲自线| 久久久综合网站| 国产精品福利一区| 九九九精品视频| 欧美色国产精品| 一色桃子久久精品亚洲| 久久精品国产亚洲a| 在线观看网站黄不卡| 国产精品日韩成人| 三级亚洲高清视频| 在线日韩国产精品| 亚洲欧洲av在线| 国内久久婷婷综合| 91精品在线一区二区| 亚洲精品成人天堂一二三| 成人性色生活片免费看爆迷你毛片| 欧美精品在线一区二区三区| 综合av第一页| 粉嫩一区二区三区在线看| 日韩你懂的在线播放| 亚洲丰满少妇videoshd| 99久久伊人网影院| 国产欧美一区二区精品性色 | 五月天国产精品| 色猫猫国产区一区二在线视频| 亚洲国产成人自拍| 国产在线精品免费| 欧美大白屁股肥臀xxxxxx| 亚洲一区二区视频在线观看| 91丝袜美腿高跟国产极品老师| 亚洲国产成人在线| 国产麻豆精品视频| 精品福利一二区| 九九九精品视频| 久久午夜羞羞影院免费观看| 久久爱www久久做| 欧美va亚洲va香蕉在线| 男女视频一区二区| 日韩精品一区二区三区视频| 麻豆精品蜜桃视频网站| 日韩一区二区精品在线观看| 日韩精品成人一区二区三区| 欧美性三三影院| 同产精品九九九| 日韩视频免费观看高清完整版| 日韩精品一区第一页| 欧美一区二视频| 免费成人av资源网| 精品久久久久久久久久久久久久久久久 | 久久国产剧场电影| 欧美电影免费观看高清完整版| 麻豆国产欧美一区二区三区| 精品久久五月天| 国产成人h网站| 18涩涩午夜精品.www| 91精品办公室少妇高潮对白| 一区二区三区在线影院| 欧美日韩国产精选| 日韩国产在线观看一区| 日韩精品专区在线影院观看 | 午夜精品久久久久久| 91精品国产综合久久久久久久| 奇米影视7777精品一区二区| 欧美成人一区二区三区片免费 | 国产精品国产成人国产三级 | 欧美女孩性生活视频| 美女在线观看视频一区二区| 日本一区二区三区在线观看| 色综合久久综合| 日韩黄色免费网站| 国产婷婷色一区二区三区在线| www.亚洲免费av| 亚洲午夜国产一区99re久久| 欧美成人精品高清在线播放 | 一区二区激情视频| 日韩欧美国产一二三区| 成人国产在线观看|