package line4;
public class pro {
int line_a[]=new int[5000];
int line_b[]=new int[5000];
double line_dis[]=new double[5000];
int number;
int number_line;
int s;
int mid,last,fast;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
number=100;
for(s=1;s<number;s++){
line_a[s]=s;
line_b[s]=s+1;
line_dis[s]=1;
}
number_line=number-1;
int fast,sec,thr;
int tr;
for(tr=1;tr<1001;tr++){
fast=rndx();
sec=choice(fast);
thr=choice(sec);
System.out.println(fast+","+sec+","+thr);
check(fast,sec,thr);
System.out.println(number_line);
}
}
int rndx(){
double m1=number*Math.random();
int m2=(int)Math.floor(m1)+1;
return m2;
}
void check(int fast,int sec,int thr){
int ch;
ch=0;
if(fast==thr)ch=100;
if(check_a(fast,sec,thr)>50)ch=200;
if(ch==0)v_a(fast,sec,thr);
if(ch==200)v_b(fast,sec,thr);
}
void v_a(int fast,int sec,int thr){
number_line=number_line+1;
line_a[number_line]=fast;
line_b[number_line]=thr;
int s1,s2;
s1=search(fast,sec);
s2=search(thr,sec);
line_dis[number_line]=line_dis[s1]+line_dis[s2];
}
void v_b(int fast,int sec,int thr){
int s1,s2,s3;
s1=search(fast,sec);
s2=search(thr,sec);
double d1=line_dis[s1]+line_dis[s2];
s3=search(thr,fast);
double d2=line_dis[s3];
if(d1<d2)line_dis[s3]=d1;
}
int search(int s1,int s2){
int ss,h;
ss=0;
for(s=1;s<number_line+1;s++){
h=0;
if(line_a[s]==s1)h=h+1;
if(line_b[s]==s2)h=h+1;
if(h==2)ss=s;
}
for(s=1;s<number_line+1;s++){
h=0;
if(line_b[s]==s1)h=h+1;
if(line_a[s]==s2)h=h+1;
if(h==2)ss=s;
}
return ss;
}
int check_a(int fast,int sec,int thr){
int h,ch;
ch=0;
for(s=1;s<number_line+1;s++){
h=0;
if(line_a[s]==fast)h=h+1;
if(line_b[s]==thr)h=h+1;
if(h==2)ch=100;
}
for(s=1;s<number_line+1;s++){
h=0;
if(line_b[s]==fast)h=h+1;
if(line_a[s]==thr)h=h+1;
if(h==2)ch=100;
}
return ch;
}
int choice(int delta){
int s,sx;
int[] ch=new int[500];
int number_ch;
sx=0;
for(s=1;s<number_line+1;s++){
if(line_a[s]==delta)sx=sx+1;
if(line_a[s]==delta)ch[sx]=line_b[s];
}
for(s=1;s<number_line+1;s++){
if(line_b[s]==delta)sx=sx+1;
if(line_b[s]==delta)ch[sx]=line_a[s];
}
number_ch=sx;
double m1=number_ch*Math.random();
int m2=(int)Math.floor(m1)+1;
int m3=ch[m2];
return m3;
}
}
最終更新:2015年04月28日 06:08