package mount;
public class pro {
double[] point=new double[11];
int[][] link=new int[11][11];
int[] number_link=new int[11];
int s;
int[] peak=new int[11];
int number_peak;
int[] mount=new int[11];
int number_mount;
int[] group=new int[11];
public static void main(String[] args) {
pro te=new pro();
}
pro(){
number_link[1]=1;
link[1][1]=2;
number_link[10]=1;
link[1][10]=9;
for(s=2;s<10;s++){
link[s][1]=s-1;
link[s][2]=s+1;
number_link[s]=2;
}
for(s=1;s<11;s++){
point[s]=100*Math.random();
}
int sx,s,h,s1;
int tx;
tx=0;
for(s=1;s<11;s++){
h=0;
for(sx=1;sx<number_link[s]+1;sx++){
s1=link[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++){
s1=peak[s];
}
int tr;
for(tr=1;tr<number_peak+1;tr++){
mount sub2=new mount();
sub2.point=point;
sub2.link=link;
sub2.point=point;
sub2.number_link=number_link;
sub2.makedata(peak[tr]);
mount=sub2.group;
number_mount=sub2.number_group;
}
}
}
package mount;
public class mount {
double[] point=new double[11];
int[][] link=new int[11][11];
int[] number_link=new int[11];
int group[]=new int[11];
int number_group;
int number_boader;
int boader[]=new int[11];
int subgroup[]=new int[11];
int number_sub;
int subboader[]=new int[11];
int number_subboader;
void makedata(int sp){
group[1]=sp;
number_group=1;
int pre=number_group;
int delta=0;
while(delta<50){
boader();
int s;
int tr=1;
int mode=0;
if(number_boader==0)mode=100;
while(mode<50){
for(s=1;s<number_group+1;s++){
subgroup[s]=group[s];
}
number_sub=number_group+1;
subgroup[number_sub]=boader[tr];
subboader();
double minp,maxp;
minp=99999;
for(s=1;s<number_sub+1;s++){
int s1=subgroup[s];
if(point[s1]<minp)minp=point[s1];
}
maxp=0;
for(s=1;s<number_subboader+1;s++){
int s1=subboader[s];
if(point[s1]>maxp)maxp=point[s1];
}
tr=tr+1;
if(tr>number_boader)mode=100;
if(minp<maxp)change();
if(minp<maxp)mode=100;
}
if(number_group==pre)delta=100;
pre=number_group;
}
}
void change(){
int s;
for(s=1;s<number_sub+1;s++){
group[s]=subgroup[s];
}
number_group=number_sub;
}
void boader(){
int s,s1,sx,s2,tx;
number_boader=0;
int h;
for(s=1;s<number_group+1;s++){
s1=group[s];
for(sx=1;sx<number_link[s1]+1;sx++){
s2=link[s1][sx];
h=0;
for(tx=1;tx<number_boader+1;tx++){
if(s2==boader[tx])h=100;
}
for(tx=1;tx<number_group+1;tx++){
if(s2==group[tx])h=100;
}
if(h<50)number_boader=number_boader+1;
if(h<50)boader[number_boader]=s2;
}
}
}
void subboader(){
int s,s1,sx,s2,tx;
number_subboader=0;
int h;
for(s=1;s<number_sub+1;s++){
s1=subgroup[s];
for(sx=1;sx<number_link[s1]+1;sx++){
s2=link[s1][sx];
h=0;
for(tx=1;tx<number_subboader+1;tx++){
if(s2==subboader[tx])h=100;
}
for(tx=1;tx<number_sub+1;tx++){
if(s2==subgroup[tx])h=100;
}
if(h<50)number_subboader=number_subboader+1;
if(h<50)subboader[number_subboader]=s2;
}
}
}
}
最終更新:2015年10月23日 14:54