http://acm.hdu.edu.cn/showproblem.php?pid=1051
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef struct
{
int Length;
int Weight;
}Game;
int cmp( const void *a , const void *b )
{
Game *c = (Game *)a;
Game *d = (Game *)b;
if(c->Length != d->Length)
return c->Length - d->Length;
else return c->Weight-d->Weight;
}
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
Game aa[n];
int flag[n];
for(int i=0;i<n;i++)
{
flag[i]=0;
scanf("%d%d",&aa[i].Length,&aa[i].Weight);
}
qsort(aa,n,sizeof(aa[0]),cmp);
Game now;
int l = n;
int t = 0;
while(l)
{
now.Length = 0;
now.Weight = 0;
for(int i=0; i<n; i++)
{
if(flag[i]) continue;
if(now.Weight <= aa[i].Weight)
{
now = aa[i];
flag[i] = 1;
l--;
}
}
t++;
}
printf("%d\n", t);
}
return 0;
}这是用数组保存是否被标记,,,,,,,,
****************************************************还可以在结构体里面设置标记
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef struct
{
int Length;
int Weight;
bool b;
}Game;
int cmp( const void *a , const void *b )
{
Game *c = (Game *)a;
Game *d = (Game *)b;
if(c->Length != d->Length)
return c->Length - d->Length;
else return c->Weight-d->Weight;
}
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
bool fla=true;
scanf("%d",&n);
Game aa[n];
for(int i=0;i<n;i++)
{
aa[i].b=false;
scanf("%d%d",&aa[i].Length,&aa[i].Weight);
}
qsort(aa,n,sizeof(aa[0]),cmp);
int sum=0,k,ia;
while(fla)
{
fla=false;
for(k=0;k<n;k++)
if(aa[k].b==false)
{
aa[k].b=true;
sum++;
fla=true;
break;
}
Game now;
now=aa[k];
for(ia=k+1;ia<n;ia++)
if(!aa[ia].b&&now.Weight<=aa[ia].Weight)
{
aa[ia].b=true;
now=aa[ia];
}
}
printf("%d\n",sum);
}
return 0;
}
感觉着样也挺好的,挺方便的....