#P1609. Tiling Up Blocks

Tiling Up Blocks

题目描述

迈克尔收到一份生日礼物,里面有n个积木块。每个积木块由两个参数(l, m)表示,其中上表面左侧有l个凸起的旋钮,中间有m个凸起的旋钮;对应的下表面左侧有l个凹陷的槽,中间有m个凹陷的槽。

积木块的叠放规则是:一个(l, m)积木块可以叠在另一个(l', m')积木块上,当且仅当 l ≥ l' 且 m ≥ m'

问题要求:给定n个积木块,找出能叠出的最高高度的积木塔,并计算有多少种不同的积木组合可以达到这个最高高度。

输入格式

  • 每组输入以整数n开头(n ≤ 10000),随后n行每行包含两个整数li和mi(1 ≤ li, mi ≤ 100),表示第i个积木块的参数。
  • 输入以n=0结束。

输出格式

  • 对每组输入,输出能叠出的最高积木塔的组合数。
  • 所有输出结束后,输出一个单独的星号*

输入示例 1

3  
3 2  
1 1  
2 3  
5  
4 2  
2 4  
3 3  
1 1  
5 5  
0  

输出示例 1

2  
3  
*  

来源

亚洲高雄竞赛 2003