题目链接:http://uva.onlinejudge.org/external/107/10719.html
第一眼看到这道题时,感觉好像挺困难啊。但试着在纸上推一推,便发现其实还是挺好做的嘛。
因为有 ,我觉得直接从等号左边往右边算很难算出来,所以我从右往左推。演算的时候,根据题目的条件,我先找一个例子来算。设:
把 化开,可以得到:
因此,我们只要抓住 ,就可以从上往下一步步地算出所有要求的东西了。
1 |
|
上面的代码中,我用了 STL 队列来保存输入的数据,这使得空间复杂度成了 。其实可以把空间复杂度降到 ,不过感觉在这一题里,用队列的坏处不大,因为 n 最大只到 10000,存下它不难。