蹭点分 from http://topic.csdn.net/t/20050517/16/4013920.htmlusing System;
public Class1 { public Class1(){}; public const int X=5; public const int Y=7; //在c#中不提倡指针,所以方法void xi_max(int *m2,int *mn1,float *c,int *is,int *ir,int //*j0,float (*a)[X][Y])变为: void xi_max(ref int m2,ref int mn1,ref float c,ref int is,ref int ir,ref int j0,ref float a[X][Y]) { int j,c=0; for(j=1;j<=is;j++) { if((a[ir][j]-c>0) { c=a[ir][j]; j0=j;}}}
from http://topic.csdn.net/t/20050517/16/4013920.htmlusing System;
public Class1
{
public Class1(){};
public const int X=5;
public const int Y=7;
//在c#中不提倡指针,所以方法void xi_max(int *m2,int *mn1,float *c,int *is,int *ir,int
//*j0,float (*a)[X][Y])变为:
void xi_max(ref int m2,ref int mn1,ref float c,ref int is,ref int ir,ref int j0,ref float a[X][Y])
{ int j,c=0;
for(j=1;j<=is;j++)
{ if((a[ir][j]-c>0)
{
c=a[ir][j];
j0=j;}}}
方法int xi_sm(int m,int n,int m2,int mn1,int l1,float (*a)[X][Y],
int(*k)[],float(*x)[])
依次类推,只是2个goto heap有点麻烦,可以采用循环的形式..
int xi_sm(int m,int n,int m2,int mn1,int l1,ref float a[X][Y],ref int k[],ref float x[])
{
int i,m1,mn,j0,i0,j;
float c,g;
m1=m+1;
mn=m+n;
for(i=1;i<=m;i++)
k[i]=n+i;
while(true)
{
if(l1-1==0)
xi_max(ref m2,ref mn1,ref c,ref mn,ref m1,ref j0,a);
while(true)//这个while(true){}就对应着goto leap2---leap2结构...
{
if(l1-50==0)
xi_max(ref m2,ref mn,ref c,ref n,ref m2,ref j0,a);
if((l1-1)!=0&&(l1-50)!=0)
xi_max(ref m2,ref mn1,ref c,ref mn,ref m2,ref j0,a);
c-=1e-8;//?????????????????????????????????????????
if((c<=0)&&(l1==1)&&((*a)[m1][mn1]-1e-8>0))
{
Console.WriteLine("\n\t*********Not min&&No solution**********\n");
return(-1);
}
if((c<0)&&(l1==1))
{
l1=50;}}
.............
}
public static void Main(sting[] Args)
{
float a[5][7]={{0,0,0, 0, 0,0,0},
{0,3,-4,3, 1,0,12},
{0,3,0, 6, 0,1,12},
{0,0,0, 0, 0,0,0},
{0,69,0,144,0,0,300}};
int k[3];
float x[3];
clrscr();
xi_sm(2,3,4,6,0,ref a,ref k,ref x);
}
}