题目描述那么久,而让我们求的东西却很简单,就是给你一些木棍,已知每根木棍的质量与长度,问按照质量与长度把这些木棍分类,问至少能分为多少类?
分类的要求:每一类中的木棍能按质量与长度从小到大排序!
思路:我们先把每根木棍用结构体存起来,然后按长度(或质量)从小到大进行排序,假如长度(或质量)相等的按照质量(或长度)排序!再宁外一个量由小到大分类,假如说木棍n+1的质量(或长度)小于木棍n,那么下一类的分类已经开始;
参考代码如下:
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct Machine
{
int l, w;
}data[5010];
bool use[5010];
bool operator < (const Machine a, const Machine b) //将木棒排序 长度递增 若相等则重量递增
{
if(a.l == b.l)
return a.w < b.w;
return a.l < b.l;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int m,sum=0;
cin>>m;
int last;
memset(use,0,sizeof(use));
for(int i=0;i<m;i++)
{
cin>>data[i].l>>data[i].w;
}
sort(data,data+m);
for(int i=0;i<m;i++){
last=data[i].w;
if(!use[i])
{
for(int j=i+1;j<m;j++)
{
if(data[j].w>=last&&!use[j])
{
last=data[j].w;
use[j]=1;
}
}
sum++;
}
}
cout<<sum<<endl;
}
}