题目描述:https://pycoder.blog.csdn.net/article/details/125012163
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct Book {
int length;
int width;
int valid;
};
int n;
struct Book book[100];
int res;
void dfs(int index, int num)
{
res = fmax(num, res);
for (int i = 0; i < n; i++) {
if (book[i].valid == 0) {
if (book[i].length <= book[index].length
&& book[i].width <= book[index].width) {
num++;
book[i].valid = 1;
dfs(i, num);
book[i].valid = 0;
}
}
}
}
int main(void)
{
res = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &book[i].length, &book[i].width);
book[i].valid = 0;
}
for (int i = 0; i < n; i++) {
book[i].valid = 1;
dfs(i, 0);
book[i].valid = 0;
}
printf("%d\n", res);
return 0;
}