📄 d.cpp
字号:
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#define NUM 40
using namespace std;
struct data
{
string dip1;
string dip2;
};
struct degree
{ string s;
int t;
};
void sort(degree de1[NUM],int &m)
{
int i;
string na;
int n;
for(i=0;i<m-1;i++)
for(int j=0;j<m-1-i;j++)
if(de1[j+1].t>de1[j].t)
{
na=de1[j].s;
n=de1[j].t;
de1[j].s=de1[j+1].s;
de1[j].t=de1[j+1].t;
de1[j+1].s=na;
de1[j+1].t=n;
}
}
int Random (int a, int b)
{
int area=0;
int ret=0;
//生成区间
area=b-a+1;
ret=(int)(rand()*area/(1.0 * RAND_MAX)+a);
return ret;
}
void getrand(data d1[],degree de1[],int &m)
{
int i,a=0,k;
for(i=0;i<NUM;i++)
{
if(de1[a].t==0) a++;
if(a==m) break;
k=Random(a+1,m-1);
d1[i].dip1=de1[a].s;
de1[a].t--;
d1[i].dip2=de1[k].s;
de1[k].t--;
if(de1[k].t==0)
{
for(int n=k;n<m-1;n++)
{
de1[n].s=de1[n+1].s;
de1[n].t=de1[n+1].t;
}
m--;
}
// cout<<i<<" "<<d1[i].dip1<<" "<<d1[i].dip2<<endl;
}
}
int main()
{
data d[NUM+1];
string d1;
string d2;
int i=0;
ifstream infile("huzuo2.dat");
if(!infile)
{
cerr<<"open error!"<<endl;
abort();
}
while(infile)
{
infile>>d1>>d2;
d[i].dip1=d1;
d[i++].dip2=d2;
}
infile.close();
degree de[2*NUM];
//string s2[40];
int k=0,j=0;
string ch=d[0].dip1;
for(i=0;i<NUM+1;i++)
{
if(d[i].dip1==ch) k++;
else
{
// cout<<ch<<" "<<k<<endl;
de[j].s=ch;
de[j++].t=k;
ch=d[i].dip1;
k=1;
}
}
int n=j-1,b=0;
for(i=0;i<NUM;i++)
{
for(int a=0;a<n;a++)
if(d[i].dip2==de[a].s) {de[a].t++;i++;}
for(int l=n;l<j;l++)
if(d[i].dip2==de[l].s) i++;
for(int m=i+1;m<NUM;m++)
if(d[i].dip2==d[m].dip2) k++;
de[j].s=d[i].dip2;
de[j++].t=k;
k=1;
}
sort(de,j);
for(i=0;i<j;i++) cout<<de[i].s<<" "<<de[i].t<<endl;
srand((unsigned)time(NULL));
getrand(d,de,j);
for(i=0;i<NUM;i++) cout<<i<<" "<<d[i].dip1<<" "<<d[i].dip2<<endl;
ofstream outfile("negative.dat",ios::out);
if(!outfile)
{
cerr<<"open error!"<<endl;
abort();
}
for(i=0;i<NUM;i++)
outfile<<d[i].dip1<<" "<<d[i].dip2<<endl;
outfile.close();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -