洛谷p1464-Function
题解一:
思路:
题意是输入若干行,其结束标识是输入”-1 -1 -1”。
关键思想是使用:记忆化搜索,即开一个数组来存储一些数据。所谓记忆话搜索,就是对于你求的解,将他们的值都存在数组中,如果在搜索的过程中,这个解已经被计算过存储在了数组中,就不再需要计算了,直接返回f数组中对应的存储好的解。如果没有既定存储好的,就计算,存在f数组中。
由题意可以知道:
如果a,b,c有一个小于0,就返回1; (case 1)
如果a,b,c有一个大于20,就返回w(20,20,20); (case 2)
如果a<b且b<c就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); (case 3)
如果其他的情况就返回w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c) (case 4)
可以发现,要开一个数组来存储这些返回值的话:这个数组的大小只要f[25][25][25]足够,就可以把所以的不同的情况都保存起来。
代码:
1 |
|