题目描述
某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现在为了加工需要,要将它们分成若干组,使每一组的零件都能排成一个长度和重量都不下降(若i
//零件分组
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int b[1001],f[1001],d[1001];
struct chai
{
int l,w;
}a[1001];
int comp(const chai &c,const chai &d)
{
if(c.w<d.w) return 1;
if(c.w>d.w) return 0;
if(c.l<d.l) return 1;
return 0;
}
int main()
{
int n,i,k=0,max,p,j;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i].l>>a[i].w;
sort(a+1,a+n+1,comp);
f[1]=1;d[1]=a[1].l;
for(i=2;i<=n;i++)
{
int k=0,maxn=0;
for(j=1;j<=i-1;j++)
if(d[f[j]]<=a[i].l && d[f[j]]>=maxn)
{
maxn=d[f[j]];
k=j;
}
if(k==0) f[i]=f[i-1]+1,d[f[i]]=a[i].l;
else f[i]=f[i-1],d[f[k]]=a[i].l;
}
cout<<f[n]<<endl;
return 0;
}