摘要: http://poj.org/problem?id=3252看了discuss里面的解题报告才明白的,这个解题报告太强大了:http://poj.org/showmessage?message_id=158333不多讲已经很详细了,不明白多看几遍肯定会明白的。注意这里的公式c(i,j) = c(i - 1,j -1) + c(i - 1,j);c(n,0) + c(n,1) + c(n,2) + c(n,3) + ...... + c(n,n) = 2^n;View Code #include <cstdio>#include <cstring>#include < 阅读全文
posted @ 2012-05-03 20:40 E_star 阅读(330) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1942将左右方向走看作1,上下方向看作0, 则结果就是c(n + m, m);这里第一印象做就是c(i,j) = c(i - 1,j - 1) + c(i - 1,j)这个递推公式,可是数据量太大不行。于是就用到了c(i,j) = c(i - 1, j - 1)*i/j这个公式了,(其实就是c(i,j) = (i*(i -1) * (i -2)....(i - j + 1))/(j*(j - 1).......*1))的计算只不过是怕先算分子分母再做除法时,分子分母的值会越界罢了。。两种实现方式:1:View Code #include & 阅读全文
posted @ 2012-05-03 18:54 E_star 阅读(241) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1019我自己也搞不清为什么分到组合数学里面去。一个找规律+递推的题目;才开始我也是理解错了题目以为求i位置下的数呢,题目要求的是第i个位置下的数字只能是0-----9了。WA了好几次才发现。首先根据((1 + x)*x)/2 =2147483647 估算到达65537肯定超过2147483647各数字。所以只要计算1到65537的各位数字即可。a[i]存第i行 1到i有多少个数字 sum[i]记录的是1 -- i 行总共有多少数字。首先根据sum确定i位置在那一行(按i分行,如下),然后在求在这一行的位置11 21 2 31 2 3 4.. 阅读全文
posted @ 2012-05-03 17:37 E_star 阅读(307) 评论(0) 推荐(0)