⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 一、问题的提出: 某厂根据计划安排
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <time.h>
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int count=0;
int m;   int n;
int **B;  //储存分配情况
int ***V;  //分配价值表
int ***C;  //随机生成价值表
//---------------------------------------------------------------------------




void fenpei(int mm,int nn)
{   int **tem;
    tem=new int*[n+1];
    for(int p1=0;p1<=n;p1++)
       tem[p1]=new int[m+1];
    for(int i=0;i<=n;i++)
      for(int j=0;j<=m;j++)
         tem[i][j]=0;
    for(int i=0;i<=mm;i++)
       V[count][0][i]=0;

    for(int i=1;i<=nn;i++)
      {  int max_temp=0;
        for(int j=1;j<=mm;j++)
           {    int temp=0;
             for(int s=0;s<=i;s++)
               {
                 temp=V[count][s][j-1]+C[count][i-s][j];
                 if(temp>max_temp)
                    {
                      max_temp=temp;
                     tem[i][j]=i-s;

                    }

               }
              V[count][i][j]=max_temp;
           }
     }
 int add=0;   int tt=n;
  for(int flag=m;flag>=1;flag--)
    {
       B[count][flag]=tem[tt][flag];

      for(int pp=flag;pp<=flag;pp++)
              add=add+B[count][pp];

      tt=n-add;
     }

}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

   count=0;

  for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";


     for(int i=1;i<=m;i++)
      {
       StringGrid3->Cells[i][0]="车间"+AnsiString(i) ;
       StringGrid3->Cells[i][1]=" ";
        }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid1->Cells[r][t]=" ";

            }

       }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid2->Cells[r][t]=" ";

            }

       }
    Edit1->Text=" ";

     clock_t time_p; clock_t tim2;   clock_t tim1;

     AnsiString velue1;
              velue1=InputBox("输入设备台数    ","输入设备台数    ","0");

              n=StrToInt(velue1);
       AnsiString velue2;
              velue2=InputBox("输入车间数    ","输入车间数    ","0");

              m=StrToInt(velue2);



     B=new int*[10];
     for(int r=0;r<10;r++)
       {
        B[r]=new int[m+1];
        for(int s=0;s<m;s++)
          {
             B[r][s]=0;
          }
        }
     V=new int**[10];
     for(int i=0;i<10;i++)
       {
         V[i]=new int*[n+1];
         for(int j=0;j<=n;j++)
           { V[i][j]=new int[m+1];}
       }
  for(int w=0;w<10;w++)
   {
     for(int x=0;x<=n;x++)
        for(int y=0;y<=m;y++)
           V[w][x][y]=0;
    }
      C=new int**[10];
      for(int ii=0;ii<10;ii++)
       {
         C[ii]=new int*[n+1];
         for(int jj=0;jj<=n;jj++)
           { C[ii][jj]=new int[m+1];}
       }
     for(int ww=0;ww<10;ww++)
     { for(int xx=0;xx<=n;xx++)
        for(int yy=0;yy<=m;yy++)
           C[ww][xx][yy]=0;
     }



     for(int p=1;p<=n;p++)
         for(int q=1;q<=m;q++)
            {
              AnsiString velue;
              velue=InputBox("输入利润矩阵     ",AnsiString(p)+"行"+AnsiString(q)+"列"+":              ","0");

              C[count][p][q]=StrToInt(velue);
            }



        tim1=clock();
         fenpei(m,n);
        tim2=clock();
        time_p=tim2-tim1;
        Label7->Caption=AnsiString(time_p)+"  毫秒  ";
            

      



     for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";
     Label2->Caption="第 "+AnsiString(count+1)+" 组";
     Label3->Caption="第 "+AnsiString(count+1)+" 组";



     for(int i=1;i<=m;i++)
      {
       StringGrid3->Cells[i][0]="车间"+AnsiString(i);
       StringGrid3->Cells[i][1]=AnsiString(B[count][i]);
        }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid1->Cells[r][t]=AnsiString(C[count][t][r]);

            }

       }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid2->Cells[r][t]=AnsiString(V[count][t][r]);

            }

       }
    Edit1->Text=AnsiString(V[count][n][m]);



}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{  Button3->Visible=true;
    n=30;m=10;
    clock_t time_p; clock_t tim2;   clock_t tim1;

    B=new int*[10];
     for(int r=0;r<10;r++)
       {
        B[r]=new int[m+1];
        for(int s=0;s<m;s++)
          {
             B[r][s]=0;
          }
        }
     V=new int**[10];
     for(int i=0;i<10;i++)
       {
         V[i]=new int*[n+1];
         for(int j=0;j<=n;j++)
           { V[i][j]=new int[m+1];}
       }
  for(int w=0;w<10;w++)
   {
     for(int x=0;x<=n;x++)
        for(int y=0;y<=m;y++)
           V[w][x][y]=0;
    }
      C=new int**[10];
      for(int ii=0;ii<10;ii++)
       {
         C[ii]=new int*[n+1];
         for(int jj=0;jj<=n;jj++)
           { C[ii][jj]=new int[m+1];}
       }
     for(int ww=0;ww<10;ww++)
     { for(int xx=0;xx<=n;xx++)
        for(int yy=0;yy<=m;yy++)
           C[ww][xx][yy]=0;
     }
tim1=clock();
for(int counts=0;counts<10;counts++)
 {    count=counts;

      for(int p=1;p<=n;p++)
         for(int q=1;q<=m;q++)
            {
              C[count][p][q]=random(1000);
            }


       

         fenpei(m,n);

 }

     tim2=clock();
     time_p=tim2-tim1;
     Label7->Caption=AnsiString(time_p)+"  ms   ";




     count=0;
     for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";
     Label2->Visible=true;
     Label3->Visible=true;



}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{ ShowMessage("请选择要查看的实例(1--10)");
           AnsiString velue2;
              velue2=InputBox("输入    ","输入实例的序数            ","1");

              count=StrToInt(velue2)-1;
          if(count==-1)
          ShowMessage("实例的序数 从1开始");
          else
    {
        for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";
     Label2->Caption="第 "+AnsiString(count+1)+" 组";
     Label3->Caption="第 "+AnsiString(count+1)+" 组";



     for(int i=1;i<=m;i++)
      {
       StringGrid3->Cells[i][0]="车间"+AnsiString(i) ;
       StringGrid3->Cells[i][1]=AnsiString(B[count][i]);
        }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid1->Cells[r][t]=AnsiString(C[count][t][r]);

            }

       }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid2->Cells[r][t]=AnsiString(V[count][t][r]);

            }

       }
    Edit1->Text=AnsiString(V[count][n][m]);
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
   Close();     
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)
{
          count=0;
     clock_t time_p; clock_t tim2;   clock_t tim1;

     AnsiString velue1;
              velue1=InputBox("输入设备台数    ","输入设备台数    ","0");

              n=StrToInt(velue1);
       AnsiString velue2;
              velue2=InputBox("输入车间数    ","输入车间数    ","0");

              m=StrToInt(velue2);



     B=new int*[10];
     for(int r=0;r<10;r++)
       {
        B[r]=new int[m+1];
        for(int s=0;s<m;s++)
          {
             B[r][s]=0;
          }
        }
     V=new int**[10];
     for(int i=0;i<10;i++)
       {
         V[i]=new int*[n+1];
         for(int j=0;j<=n;j++)
           { V[i][j]=new int[m+1];}
       }
  for(int w=0;w<10;w++)
   {
     for(int x=0;x<=n;x++)
        for(int y=0;y<=m;y++)
           V[w][x][y]=0;
    }
      C=new int**[10];
      for(int ii=0;ii<10;ii++)
       {
         C[ii]=new int*[n+1];
         for(int jj=0;jj<=n;jj++)
           { C[ii][jj]=new int[m+1];}
       }
     for(int ww=0;ww<10;ww++)
     { for(int xx=0;xx<=n;xx++)
        for(int yy=0;yy<=m;yy++)
           C[ww][xx][yy]=0;
     }



     for(int p=1;p<=n;p++)
         for(int q=1;q<=m;q++)
            {
              AnsiString velue;
              velue=InputBox("输入利润矩阵     ",AnsiString(p)+"行"+AnsiString(q)+"列"+":              ","0");

              C[count][p][q]=StrToInt(velue);
            }



        tim1=clock();
         fenpei(m,n);
        tim2=clock();
        time_p=tim2-tim1;
        Label7->Caption=AnsiString(time_p)+"毫秒";
            

      



   //固定输出
     for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";
     Label2->Caption="第 "+AnsiString(count+1)+" 组";
     Label3->Caption="第 "+AnsiString(count+1)+" 组";



     for(int i=1;i<=m;i++)
      {
       StringGrid3->Cells[i][0]="车间"+AnsiString(i) ;
       StringGrid3->Cells[i][1]=AnsiString(B[count][i]);
        }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid1->Cells[r][t]=AnsiString(C[count][t][r]);

            }

       }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid2->Cells[r][t]=AnsiString(V[count][t][r]);

            }

       }
    Edit1->Text=AnsiString(V[count][n][m]);


}
//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)
{
         n=30;m=10;
    clock_t time_p; clock_t tim2;   clock_t tim1;

    B=new int*[10];
     for(int r=0;r<10;r++)
       {
        B[r]=new int[m+1];
        for(int s=0;s<m;s++)
          {
             B[r][s]=0;
          }
        }
     V=new int**[10];
     for(int i=0;i<10;i++)
       {
         V[i]=new int*[n+1];
         for(int j=0;j<=n;j++)
           { V[i][j]=new int[m+1];}
       }
  for(int w=0;w<10;w++)
   {
     for(int x=0;x<=n;x++)
        for(int y=0;y<=m;y++)
           V[w][x][y]=0;
    }
      C=new int**[10];
      for(int ii=0;ii<10;ii++)
       {
         C[ii]=new int*[n+1];
         for(int jj=0;jj<=n;jj++)
           { C[ii][jj]=new int[m+1];}
       }
     for(int ww=0;ww<10;ww++)
     { for(int xx=0;xx<=n;xx++)
        for(int yy=0;yy<=m;yy++)
           C[ww][xx][yy]=0;
     }
tim1=clock();
for(int counts=0;counts<10;counts++)
 {    count=counts;

      for(int p=1;p<=n;p++)
         for(int q=1;q<=m;q++)
            {
              C[count][p][q]=random(1000);
            }




         fenpei(m,n);

 }

     tim2=clock();
     time_p=tim2-tim1;
     Label7->Caption=AnsiString(time_p)+"  毫秒";




     count=0;
     for(int pp=1;pp<=m;pp++)
        {
         StringGrid1->Cells[pp][0]="车间"+AnsiString(pp) ;
         StringGrid2->Cells[pp][0]="车间"+AnsiString(pp) ;
        }
     for(int ppp=1;ppp<=n;ppp++)
        {
         StringGrid1->Cells[0][ppp]=AnsiString(ppp)+"台";
         StringGrid2->Cells[0][ppp]=AnsiString(ppp)+"台";
        }
     StringGrid3->Cells[0][1]="台数";
     Label2->Caption="第 "+AnsiString(count+1)+" 组";
     Label3->Caption="第 "+AnsiString(count+1)+" 组";



     for(int i=1;i<=m;i++)
      {
       StringGrid3->Cells[i][0]="车间"+AnsiString(i) ;
       StringGrid3->Cells[i][1]=AnsiString(B[count][i]);
        }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid1->Cells[r][t]=AnsiString(C[count][t][r]);

            }

       }
     for(int t=1;t<=n;t++)
      {
       for(int r=1;r<=m;r++)
          {
           StringGrid2->Cells[r][t]=AnsiString(V[count][t][r]);

            }

       }
    Edit1->Text=AnsiString(V[count][n][m]);


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{Close();
}
//---------------------------------------------------------------------------












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -