アットウィキロゴ

らいぶらう00

package echelon;
 
public class echelon {
 
public int number;    
public int[] number_dir=new int[2001];
public int[][] dir=new int[2001][21];
public double[] point=new double[2001];
int[] peak=new int[2500];
int number_peak;
 
public int[][] group=new int[2001][2001];
public int[] number_group=new int[2001];
public int[] life=new int[2001];
public int number_g;
 
 
public void makedata(){
 
    int s,tx,sx,h,s1;
 
       tx=0;   
    for(s=1;s<number+1;s++){
    h=0;   
    for(sx=1;sx<number_dir[s]+1;sx++){ 
    s1=dir[s][sx];
    if(point[s1]>point[s])h=100;
    }   
    if(h<50)tx=tx+1;
    if(h<50)peak[tx]=s;
    }
 
    number_peak=tx;
for(s=1;s<number_peak+1;s++){
group[s][1]=peak[s];
life[s]=100;
number_group[s]=1;
}    
 
 
 
    int g1,sig;
 
 
    for(g1=1;g1<number_peak+1;g1++){
    int mode=0;
    while(mode<50){
    mount sub=new mount();
    sub.dir=dir;
    sub.number_group=number_group;
    sub.group=group;
    sub.number_dir=number_dir;
    sub.number=number;
    sub.point=point;
    sub.makedata(g1);
    sig=sub.sig;        
    number_group=sub.number_group;
    group=sub.group;
    if(sig<50)mode=100;
    }
    }
 
    number_g=number_peak;
 
 
    int modex=0;
    while(modex<50){
int sxs=search();
if(sxs>0){
join sub2=new join();
    sub2.dir=dir;
    sub2.number_group=number_group;
    sub2.group=group;
    sub2.number_dir=number_dir;
    sub2.life=life;
    sub2.number_g=number_g;
    sub2.number=number;
    sub2.makedata(sxs);
    life=sub2.life;
    number_group=sub2.number_group;
    group=sub2.group;
number_g=sub2.number_g;
}
    if(sxs==0)modex=100;     
    }
 
 
 
 
 
 
}
 
    int search(){
    int s,sx,s1;
    int[] a=new int[2001];
 
    for(s=1;s<number_g+1;s++){
    for(sx=1;sx<number_group[s]+1;sx++){    
    s1=group[s][sx];
    a[s1]=100;
    }
    }
 
    double maxp=0;
    int sxs=0;
    for(s=1;s<number+1;s++){
    double p1=point[s];
    if(a[s]>50)p1=-999;
    if(p1>maxp)sxs=s;
    if(p1>maxp)maxp=p1;
    }
    return sxs;
}
 
}
 
 
package echelon;
 
 
public class join {
 
int[] number_dir=new int[5000];
int number;    
int[] number_group=new int[2001];
int[][] dir=new int[2001][21];
int[][] group=new int[2001][2001];
int number_g;
int[] life=new int[2001];
 
void makedata(int sp){
    int s,sx,s1;
    int[] a=new int[2001];
    int[] b=new int[2001];
 
    for(s=1;s<number_dir[sp]+1;s++){
    s1=dir[sp][s];    
    for(int gx=1;gx<number_g+1;gx++){
    int ch=check_group(gx,s1);
    if(ch>60)a[gx]=100;
    }
    }
 
    sx=0;
    for(s=1;s<number_g+1;s++){
    if(a[s]>50)sx=sx+1;
    if(a[s]>50)b[sx]=s;
    }
    int number_b=sx;
 
 
 
 
    if(number_b==1){
    int g1=b[1]; 
    number_group[g1]=number_group[g1]+1;
   sx=number_group[g1];
    group[g1][sx]=sp;
        }   
 
    if(number_b>1){
 
 
 
    int g2=number_g+1;
    int tx=0;
    for(s=1;s<number_b+1;s++){
    int g1=b[s];
    for(sx=1;sx<number_group[g1]+1;sx++){
    tx=tx+1;
    group[g2][tx]=group[g1][sx];
    }
    life[g1]=0;
    }
 
    tx=tx+1;
 
 
 
    group[g2][tx]=sp;
    life[g2]=100;
    number_g=g2;
    number_group[g2]=tx;
 
 
 
 
    }   
 
 
 
 
 
 
 
 
}
int check_group(int g1,int s1){
 
    int s;
        int ch=0;
        for(s=1;s<number_group[g1]+1;s++){
        if(group[g1][s]==s1)ch=100;    
        }
        if(life[g1]<60)ch=0;
        return ch;
    }    
 
 
}
 
 
 
 
package echelon;
 
 
public class mount {
 
    int[][] group=new int[2001][2001];
int[] number_group=new int[2001];
    int[] number_dir=new int[2001];
int[][] dir=new int[2001][21];
int number;
double[] point=new double[2001];
int sig;
 
    void makedata(int g1){
 
    int s,sx,s1,s2,number_b;
    int[] a=new int[2001];    
    int[] b=new int[2001];    
 
    for(s=1;s<number_group[g1]+1;s++){
    s1=group[g1][s];
    for(sx=1;sx<number_dir[s1]+1;sx++){
    s2=dir[s1][sx];
    a[s2]=100;
    }
    }
 
 
    for(s=1;s<number_group[g1]+1;s++){
    s1=group[g1][s];
    a[s1]=0;
    }
 
    sx=0;
    for(s=1;s<number+1;s++){
    if(a[s]>50)sx=sx+1;
    if(a[s]>50)b[sx]=s;
    }
 
    number_b=sx;
 
    sig=0;
    for(s=1;s<number_b+1;s++){
    s1=b[s];
    int delta=0;
    for(sx=1;sx<number_dir[s1]+1;sx++){   
    s2=dir[s1][sx];    
    double p1=point[s2];   
   if(check_group(g1,s2)>50)p1=-999;
   if(p1>point[s1])delta=100; 
    }    
    int h=0;
    if(delta<50)h=h+1;
    if(sig<50)h=h+1;
    if(h==2)plus(g1,s1);
    if(h==2)sig=100;
     }
 
 
 
 
 
 
    }
 
    void plus(int g1,int s1){
 
        number_group[g1]= number_group[g1]+1;
        int s3=number_group[g1];
        group[g1][s3]=s1;
 
 
    }
 
    int check_group(int g1,int ss){
        int s;
        int ch=0;
        for(s=1;s<number_group[g1]+1;s++){
        if(group[g1][s]==ss)ch=100;    
        }
 
        return ch;
    }
 
}
 
最終更新:2016年05月30日 17:35