品牌网站制作选哪家,青岛网站建设公司好找吗,名词解释 网站内容,加工平台校准系统Project_Euler-15 题解 题目 思路
一眼背包问题#xff0c;再看一眼广度优先搜索#xff0c;再看一眼排列组合#xff0c;这里讲一讲排列组合的解法吧#xff1a;
以 2 ∗ 2 2*2 2∗2的组合为例可以发现#xff1a;
无论哪一种方法#xff0c;从左上角到右下角总共需要…Project_Euler-15 题解 题目 思路
一眼背包问题再看一眼广度优先搜索再看一眼排列组合这里讲一讲排列组合的解法吧
以 2 ∗ 2 2*2 2∗2的组合为例可以发现
无论哪一种方法从左上角到右下角总共需要四步无论哪一种方法向右和向下各需要两部
设 D 向下走 R 直着走 D 向下走\\ R 直着走 D向下走R直着走
我们有如下的可能 A N S C O U N T ( D D R R , D R D R , R R D D , R D R D , R D D R , D R R D ) 6 ANS COUNT({DDRR,DRDR,RRDD,RDRD,RDDR,DRRD})6 ANSCOUNT(DDRR,DRDR,RRDD,RDRD,RDDR,DRRD)6
在四个位置上分配随机选两个位置放D剩下的R就确定了因此就是一个排列组合 C 4 2 6 C {_4^2} 6 C426
因此对于 20 ∗ 20 20*20 20∗20的方格我们需要求 C 40 20 C{_{40}^{20}} C4020
代码
#includestdio.h
#includestdlib.h
#includemath.h
#includestring.h
#includetime.hint main(){long long m 40, n 20, ans 1;while (n 1) {if (m 20) ans * (m--);if (n ans % n 0) ans / (n--);}printf(%lld\n, ans);return 0;
}