美高梅网投网站-美高梅手机网投-美高梅官方网站
做最好的网站

您的位置:美高梅网投网址 > 美高梅官方网站 > 计数排序

计数排序

发布时间:2019-09-27 18:37编辑:美高梅官方网站浏览(102)

    #include<stdio.h>
    void CountingSort(int *arrA,int *arrB,int k,int length)
    {

    //手袋难点:f[v]=max(f[v],f[v-cost]+weight)
    #include<iostream>
    #define max(a,b) a>b?a:b
    using namespace std;
    int c[300000],i,k,sum,a[110],b[110],n;
    //01背包
    void bag(int cost,int weight)
    {
     for(i=sum/2;i>=cost;i--)
      c[i]=max(c[i],c[i-cost]+weight);
    }
    //完全包包
    void complete(int cost,int weight)
    {
     for(i=cost;i<=sum/2;i++)
      c[i]=max(c[i],c[i-cost]+weight);
    }
    //多重手袋
    void multiply(int cost,int weight,int amount)
    {
     if(cost*amount>=sum/2)
      complete(cost,weight);
     k=1;
     while(k<amount)
     {
      bag(k*cost,k*weight);
      amount-=k;
      k+=k;
     }
     bag(amount*cost,amount*weight);
    }
    int main()
    {
     int i;            //注意重新定义,不然结果会出错。
     while(cin>>n&&n>0)
     {
      memset(a,0,sizeof(a));
      memset(b,0,sizeof(b));
      memset(c,0,sizeof(c));
      for(sum=0,i=1;i<=n;i++)
      {
       cin>>a[i]>>b[i];
       sum+=a[i]*b[i];
      }
      for(i=1;i<=n;i++)
       multiply(a[i],a[i],b[i]);
      cout<<sum-c[sum/2]<<" "<<c[sum/2]<<endl;
     }
     return 0;
    }

    int c[k+1];

    memset(c,0,sizeof;

    int i=1;

    for(;i<=length;i++)

    {

    c[arrA[i]]=c[arrA[i]]+1;

    }

    i=1;

    for(;i<=k;i++)

    {

    c[i]=c[i-1]+c[i];

    }

    i=length;

    for(;i>=1;i--)

    {

    arrB[c[arrA[i]]]=arrA[i];

    c[arrA[i]]=c[arrA[i]]-1;

    }
    }

    int main()
    {

    int arrA[]={0,12,44,0,2,3,24,5,23,56,32,45,5,5,0,45,64};

    int length=sizeof/sizeof-1;

    int max=arrA[1];

    int i=1;

    for(;i<=length;i++)

    {

    if(arrA[i]>max)

    max=arrA[i];

    }

    int k=max;

    int arrB[length+1];

    CountingSort(arrA,arrB,k,length);

    i=1;

    for(;i<=length;i++)

    printf("%d ",arrB[i]);

    system;

    return 0;
    }

    本文由美高梅网投网址发布于美高梅官方网站,转载请注明出处:计数排序

    关键词: