#include <stdio.h> |
#include <stdlib.h> |
#define MAXNUM 100//矩形的最大个数 |
struct Rect |
{ |
int x; |
int y; |
}; |
int n; //矩形个数 |
struct Rect rect[MAXNUM]; |
int G[MAXNUM][MAXNUM]; //邻接有向图 |
int d[MAXNUM]; //过程数组 |
int dp( int i, int G[MAXNUM][MAXNUM]); |
int main() |
{ |
int i,j,z; |
printf ( "输入矩形个数n(1-100):\n" ); |
scanf ( "%d" ,&n); |
printf ( "输入矩形的长和宽:\n" ); |
for (i=1; i<=n; i++) |
{ |
scanf ( "%d" ,&rect[i].x); |
scanf ( "%d" ,&rect[i].y); |
} |
for (i=1; i<=n; i++) |
for (j=1; j<=n; j++) |
{ |
if (rect[i].x<rect[j].x&&rect[i].y<rect[j].y) |
G[i][j]=1; |
} |
printf ( "输入要开始的矩形z:\n" ); |
scanf ( "%d" ,&z); |
//printf("%d-",z); |
int temp = dp(z,G); |
printf ( "最大可嵌套个数:%d\n" ,temp); |
return 0; |
} |
int dp( int i, int G[MAXNUM][MAXNUM]) |
{ |
int j; |
if (d[i]>0) |
return d[i]; |
d[i]=1; |
for (j=1; j<=n; j++) |
if (G[i][j]) |
if (dp(j,G)+1>d[i]) |
{ |
d[i]=dp(j,G)+1; |
} |
return d[i]; |
} |
by: 发表于:2017-08-09 10:52:33 顶(0) | 踩(0) 回复
??
回复评论