牌型种数(JAVA)
题目:
代码:
1 |
|
思路:
可以拿十三次每次拿一张牌,但每张牌都要有十三种情况拿到所以复杂度是13^13复杂度过高。所以换一种思路
13种牌每张牌只有四张,所以我们拿十三张牌每种牌的个数可能是0,1,2,3,4张,共五种情况。
所以我们采取递归思想:
select(int x,int y);
x:目前在拿哪张牌(牌型)。
y:总共拿了多少张牌。
这样每张牌从十三种情况变为了五种,复杂度变为了5^13,并且如果在中途y>13那么可以直接舍弃这种情况(比如1取了4张,2取了4张,3取了4张,4取了4张总共已经16张牌舍弃),如果取到了第十三种牌型的牌,而且总数正好是13则种数加1。
牌型种数(JAVA)
http://example.com/2023/05/07/牌型种数(JAVA)/