本站提供最佳提示指标源码怎么设置服务,欢迎转载和分享。

【RPY选股源码】【疯狂坦克2 源码】【林业网站源码】A107源码

2024-12-29 09:25:11 来源:eclpise中查看源码 分类:探索

1.A107Դ?源码?

A107源码

A107Դ??

       帮你转帖过来了。

       你那个空间也挺垃圾的源码RPY选股源码,连个上下滚动条都没有。源码疯狂坦克2 源码

       #include<cstring>

       #include<cmath>

       #include<iostream>

       using namespace std;

       float matrix[][],源码林业网站源码x[]; /* 记录总方程的数组,解的数组 */

       int a[]; /* 记录基础,非基础的解的情况,0:非基础,1:基础 */

       int m,n,s,type; /* 方程变量,约束数,求最大最小值的类型,0:最小 1:最大 */

       int indexe,indexl,indexg; /* 剩余变量,松弛变量,人工变量 */

       void jckxj()

       {

       int i,j;

       for(i=0;i<n;i++)

       for(j=0;j<s;j++)

       if(matrix[j]==1&&a[j]==1){

       x[j]=matrix;

       j=s;

       }

       for(i=0;i<s;i++)

       if(a==0) x=0;

       }

       int rj()

       {

       int i;

       for(i=0;i<s;i++)

       if(fabs(matrix[n])>=0.)

       if(matrix[n]<0) return 0;

       return 1;

       }

       int min()

       {

       int i,temp=0;

       float min=matrix[n][0];

       for(i=1;i<s;i++)

       if(min>matrix[n]){

       min=matrix[n];

       temp=i;

       }

       return temp;

       }

       void justartificial()

       {

       int i;

       for(i=m+indexe+indexl;i<s;i++)

       if(fabs(x)>=0.){

       printf("no answern");

       return;

       }

       }

       int check(int in)

       {

       int i;

       float max1=-1;

       for(i=0;i<n;i++)

       if(fabs(matrix[in])>=0.&&max1<matrix/matrix[in])

       max1=matrix/matrix[in];

       if(max1<0)

       return 1;

       return 0;

       }

       int searchout(int *temp,int in)

       {

       int i;

       float min=;

       for(i=0;i<n;i++)

       if(fabs(matrix[in])>=0.&&(matrix/matrix[in]>=0)&&min>matrix/matrix[in]){

       min=matrix/matrix[in];

       *temp=i;

       }

       for(i=0;i<s;i++)

       if(a==1&&matrix[*temp]==1) return i;

       }

       void mto(int in,int temp)

       {

       int i;

       for(i=0;i<=s;i++)

       if(i!=in)

       matrix[temp]=matrix[temp]/matrix[temp][in];

       matrix[temp][in]=1;

       }

       void be(int temp,int in)

       {

       int i,j;

       float c;

       for(i=0;i<=n;i++){

       c=matrix[in]/matrix[temp][in];

       if(i!=temp)

       for(j=0;j<=s;j++)

       matrix[j]=matrix[j]-matrix[temp][j]*c;

       }

       }

       void achange(int in,int out)

       {

       int temp=a[in];

       a[in]=a[out];

       a[out]=temp;

       }

       void print()

       {

       int i,j,k,temp=0;

       for(i=0;i<n;i++){

       for(k=temp;k<s;k++)

       if(a[k]==1){

       printf("x%d ",k);

       temp=k+1;

       k=s;

       }

       for(j=0;j<=s;j++)

       printf("%8.2f",matrix[j]);

       printf("n");

       }

       printf("rj ");

       for(j=0;j<=s;j++)

       printf("%8.2f",matrix[n][j]);

       printf("n");

       }

       void initprint()

       {

       int i;

       printf("x");

       for(i=0;i<s;i++)

       printf(" a%d",i);

       printf(" bn");

       print();

       printf("n");

       }

       void result()

       {

       int i;

       printf(" (");

       for(i=0;i<s;i++)

       printf("%8.2f",x);

       printf(" ) ");

       if(type==1)

       printf(" zmax=%fnn",matrix[n]);

       else printf(" zmin=%fnn",matrix[n]);

       }

       void printresult()

       {

       if(type==0) printf("the minimal :%fn",-matrix[n]);

       else printf("the maximum :%fn",matrix[n]);

       }

       void merge(float nget[][],float nlet[][],float net[][],float b[])

       {

       int i,j;

       for(i=0;i<n;i++){

       for(j=m;j<m+indexe;j++)

       if(nget[j-m]!=-1) matrix[j]=0;

       else matrix[j]=-1;

       for(j=m+indexe;j<m+indexe+indexl;j++)

       if(nlet[j-m-indexe]!=1) matrix[j]=0;

       else matrix[j]=1;

       for(j=m+indexe+indexl;j<s;j++)

       if(net[j-m-indexe-indexl]!=1) matrix[j]=0;

       else matrix[j]=1;

       matrix=b;

       }

       for(i=m;i<m+indexe+indexl;i++)

       matrix[n]=0;

       for(i=m+indexe+indexl;i<s;i++)

       matrix[n]=;

       matrix[n]=0;

       }

       void processa()

       {

       int i;

       for(i=0;i<m+indexe;i++)

       a=0;

       for(i=m+indexe;i<s;i++)

       a=1;

       }

       void input(float b[],int code[])

       {

       int i=0,j=0;

       printf("the equator variable and restrictorn"); /* 输入方程变量和约束数 */

       cin>>m>>n;

       for(i=0;i<n;i++){

       printf("input b[] and restrictor code 0:<= 1:= 2:>=n"); /* 输入方程右边的值,code的值 */

       cin>>b>>code;

       printf("the xishun");

       for(j=0;j<m;j++)

       cin>>matrix[j]; /* 输入方程 */

       }

       printf("the type 0:min 1:max n"); /* 输入求最大值还是最小值 */

       do{

       cin>>type;

       if(type!=0&&type!=1) printf("error,reinputn");

       }while(type!=0&&type!=1);

       printf("the zn"); /* 输入z */

       for(i=0;i<m;i++)

       cin>>matrix[n];

       if(type==1)

       for(i=0;i<m;i++)

       matrix[n]=-matrix[n];

       }

       void xartificial()

       {

       int i,j,k;

       if(indexg!=0){

       for(i=m+indexe+indexl;i<s;i++){

       for(j=0;j<n;j++)

       if(matrix[j]==1){

       for(k=0;k<=s;k++)

       matrix[n][k]=matrix[n][k]-matrix[j][k]*;

       j=n;

       }

       }

       }

       }

       void process(float c[][],int row,int vol)

       {

       int i;

       for(i=0;i<n;i++)

       if(i!=row) c[vol]=0;

       }

       void sstart(float b[],int code[])

       {

       int i;

       float nget[][],nlet[][],net[][]; /* 剩余变量数组,松弛变量数组,人工变量数组 */

       indexe=indexl=indexg=0;

       for(i=0;i<n;i++){

       if(code==0){ nlet[indexl++]=1; process(nlet,i,indexl-1);}

       if(code==1){ net[indexg++]=1; process(net,i,indexg-1); }

       if(code==2){

       net[indexg++]=1;

       nget[indexe++]=-1;

       process(net,i,indexg-1); process(nget,i,indexe-1);

       }

       }

       s=indexe+indexl+indexg+m;

       merge(nget,nlet,net,b); /* 合并 */

       processa(); /* 初始化a[] */

       initprint(); /* 初始化打印 */

       xartificial(); /* 消去人工变量 */

       }

       void simplix() /* 单纯型算法 */

       {

       int in,out,temp=0;

       while(1){

       jckxj(); /* 基础可行解 */

       print(); /* 打印 */

       result(); /* 打印结果 */

       if(!rj()) in=min(); /* 求换入基 */

       else {

       if(indexg!=0) justartificial(); /* 判断人工变量 */

       printresult(); /* 打印最后结果 */

       return;

       }

       if(check(in)){ /* 判断无界情况 */

       printf("no delimitionn");

       return;

       }

       out=searchout(&temp,in); /* 求换出基 */

       mto(in,temp); /* 主元化1 */

       be(temp,in); /* 初等变换 */

       achange(in,out); /* 改变a[]的值 */

       }

       }

       void main()

       {

       int code[]; /* 输入符号标记 */

       float b[]; /* 方程右值 */

       input(b,code); /* 初始化 */

       sstart(b,code); /* 化标准型 */

       simplix(); /* 单纯型算法 */

       }

【本文网址:http://abssuliao.net/html/5d92299072.html 欢迎转载】

copyright © 2016 powered by 皮皮网   sitemap