题意就是 给你一些砖n1,n2,n3 砖两个值x1,y1,x2,y2,x3,y3 只有当x2>=x1&&y2>=y1时 n2可以放在n1上 问最高能落多高
理解题意主要知道 tile 这个词
vt. | 用瓦片、瓷砖等覆盖 |
#include<iostream>
using namespace std;
int a[105][105];
#define doit(m,n) for(int i=m;i<=n;i++)
struct node
{
int x;
int y;
}b[10009] ;
int main()
{
int n,x,y;
while(scanf("%d",&n))
{
if(n==0)
{
printf("*\n");
break;
}
memset(a,0,sizeof(a));
doit(1,n)
{
scanf("%d%d",&x,&y);
a[x][y]++;//这个地方一定要注意 为什么是加加 我一开始 赋值为1 wa了 加加是因为只有当x2>=x1&&y2>=y1时 n2可以放在n1上
b[i].x=x;
b[i].y=y;
}
doit(1,100)
{
for(int j=1;j<=100;j++)
{
a[i][j]+=max(a[i][j-1],a[i-1][j]);
}
}
int ans=0;
doit(1,100)
{
for(int j=1;j<=100;j++)
if(a[i][j]>ans)
ans=a[i][j];
}
cout<<ans<<endl;
}
return 0;
}