package non;
public class pro {
double[][] a=new double[6][6];
double[] b=new double[6];
int creditnumber,linenumber;
int n,m,s,sx;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
creditnumber=5;
linenumber=3;
a[0][1]=20;
a[0][2]=30;
a[1][1]=1;
a[1][2]=2;
a[2][1]=3;
a[2][2]=4;
a[3][1]=2;
a[3][2]=1;
a[1][3]=1;
a[2][4]=1;
a[3][5]=1;
b[1]=800;
b[2]=1800;
b[3]=1500;
n=search();
while(n>0){
n=search();
m=line(n);
if(n>0)cal(m,n);
}
System.out.println(b[0]);
}
void cal(int m,int n){
int s,sx;
double z;
for(s=0;s<linenumber+1;s++){
z=a[s][n]/a[m][n];
if(s==m)z=0;
for(sx=1;sx<creditnumber+1;sx++){
a[s][sx]=a[s][sx]-z*a[m][sx];
}
b[s]=b[s]-z*b[m];
}
}
int line(int nx){
int s,sx,h;
double a1,b1,c1,minc;
sx=0;
minc=999;
for(s=1;s<linenumber+1;s++){
a1=geta(s,nx);
b1=getb(s);
c1=9999;
if(a1>0.001)c1=b1/a1;
h=0;
if(c1>0)h=h+1;
if(c1==0)h=h+1;
if(c1<minc)h=h+1;
if(h==2)minc=c1;
if(h==2)sx=s;
}
return sx;
}
int search(){
int s,sx;
double a1;
sx=0;
for(s=1;s<creditnumber+1;s++){
a1=geta(0,s);
if(a1>0.01)sx=s;
}
return sx;
}
double getb(int s){
double a1,a2;
a1=b[s];
a2=0;
if(a1>0.01)a2=a1;
if(a1<-0.01)a2=a1;
return a2;
}
double geta(int s,int sx){
double a1,a2;
a1=a[s][sx];
a2=0;
if(a1>0.01)a2=a1;
if(a1<-0.01)a2=a1;
return a2;
}
}
最終更新:2013年12月03日 08:14