小鹰0903 小鹰0903
人生无非几十年……
关注数: 1 粉丝数: 0 发帖数: 141 关注贴吧数: 9
我未完成的第一题的代码。。。 // //是一种很低级的思路、、、、不会全排序的,希望各位把自己的代码展示一下 // #include <iostream> using namespace std; int   large(int *array,int m); int answer(int *a,int m);//未能全排序! //==================================main=============== int main(int argc, char *argv[]) {      int PNum;//表示工程师数目      int TNum;//表示工程数目      int *apart;//表示工程的分类      int *array;//包含标志的数组           int i,j,k,m=0;            cin>>TNum;      cin>>PNum; //将分类输入到数组中          apart = (int*)malloc(sizeof(int)*PNum);      array = (int*)malloc(sizeof(int)*TNum);      for(i=0;i<PNum;i++)      {          cin>>apart[i];      } //生成标记数组          for(j=0,i=1;j<PNum;j++,i++)      {          for(k=0;k<apart[j];k++)          {              array[m++]=i;          }      } //计算最大摆放效果      cout<<answer(array,TNum);      return 0; } //-------根据标记数组求出最大摆放效果 int   large(int *array,int m)//m为标记数组长度 {      int i,j,key,sum=0;      for(i=m-1;i>=0;i--)      {          key=array[i];          for(j=i-1;j>=0;j--)          {              if(array[j]==key)                  {sum=sum+i-j;                  break;}              else                  break;          }      }      return sum; } //计算最大摆放效果 int answer(int *a,int m) {      int t;      int lag=0;      int *b=(int *)malloc(sizeof(int)*m);           for(int i=0;i<m;i++)      {          b[i]=a[i];      }           for(int i=0;i<m;i++)      {               for(int j=i+1;j<8;j++)          {              t=b[i];              b[i]=b[j];              b[j]=t;                           if(large(b,m)>lag)                  lag=large(b,m);          }                   for(int i=0;i<m;i++)          {              b[i]=a[i];          }      }      return lag; }
1 下一页