编辑代码

 #include <math.h>
#include <string.h>
#include <stdbool.h>
#include <stdio.h>
void getNum(char buff[],int num[])
{
    int len=strlen(buff),i,j,count=0,wei[20],times=0;
 bool ctoi=0,befctoi=0;
 for(i=0;i<len+1;i++)
 {
  if(buff[i]>='0'&&buff[i]<='9')
  {
   ctoi=1;
  }
  else
  {
   ctoi=0;
  }
  if(befctoi==0&&ctoi==1)//上升沿
  {
   wei[count]=buff[i]-'0';
   befctoi=1;
   count++;
  }
  else if(befctoi==1&&ctoi==1)//高位
  {
   wei[count]=buff[i]-'0';
   count++;
  }
  else if(befctoi==1&&ctoi==0)//下降沿
  {
   for(j=0;j<count;j++)
   {
    num[times]+=wei[j]*pow(10,count-j-1);
   }
   times++;
   befctoi=0;
   count=0;
  }
 }

}

int getMax(int total[],int m)
{
    int max = total[0];
    for (int i=0;i<m;i++)
    {
        if (max <total[i])
            max = total[i];
    }

    return max;

}

int getMaxadd(int total[],int max,int m)
{
    int j=0;
    for (int i=0;i<m;i++)
    {
        if (total[i]==max)
            j=i;

    }


    return j;

}

int getSum(int total[],int m)
{
    int sum = 0;
    for (int i=0;i<m;i++)
        sum = sum+total[i];

    return sum;

}
                                                                                                                                                                  int main()
{
    FILE *fp = NULL;
    int m = 0;
    int n = 0;
    int A = 0;
    int sum[100] = {0};
    int total[100] = {0};
    char buff[255];
    int num[100]={0};

    fp = fopen("./test.txt", "r");

    fgets(buff, 255, (FILE*)fp);
    printf("生产时间、滞留时间: %s\n", buff );
    getNum(buff,num);
    n=num[0];
    m=num[1];
    num[0]=0;
    num[1]=0;
    fgets(buff, 255, (FILE*)fp);
    printf("储存成本: %s\n", buff );
    getNum(buff,num);
 //卖不出东西时
    sum[0]=num[0];
    total[0]=num[0];
 for(int i=1;i<m;i++)
    {
        sum[i]=sum[i-1]+num[i];
        total[i]=num[i];
    }
    //能卖出东西时

    for(int i=m;i<n;i++)
    {
        if (num[i]>getMax(total,m))
        {
            sum[i]= getSum(total,m);
        }

        else
        {
            total[getMaxadd(total,getMax(total,m),m)]=num[i];
            sum[i]= getSum(total,m);
        }
    }
    for(int i=n;i<m+n;i++)
    {
        total[getMaxadd(total,getMax(total,m),m)]=0;
        sum[i]= getSum(total,m);
    }

    for(int i=0;i<m+n;i++)
        A = A+sum[i];

    printf("储存成本之和最低需要: %i\n",A);

 return 0;


}