- 圆
- 圆的面积计算
- 逼近
- 上下界(这个方向研究者主要是优化逼近的速度)
- 割圆法
- 阿基米德
- 威理博·斯涅尔(Cyclometricus,1962年[来源请求])
- 惠更斯(De Circuli Magnitudine Inventa,1654年)
- 割圆法
- 无限逼近
- 高斯格点
- 数值逼近(最容易操作的方法)
- 蒙特卡罗(掷飞镖:如果随机样本一致地散布于一个包含圆的正方形中,样本击中圆的比例趋近于圆和正方形的面积比)
- 上下界(这个方向研究者主要是优化逼近的速度)
- 拼图
- 圆分为很大但有限块然后重拼成一个相同面积的正方形
- 微积分
- 积分&无穷级数展开
- 逼近
- 参考文章:
分类:算法
平时的算法问题
1)100个楼梯,一次只能走 1 、 2、3 步,问有多少种方案?
动态规划:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var a = []; for ( var i = 1; i <= 100; i++ ){ if(i == 1){ a[i] = 1; }else if(i == 2){ a[i] = 2; }else if(i == 3){ a[i] = 4; }else{ a[i] = a[i-1] + a[i-2] + a[i-3]; } } console.log(a[100]); |
2)0-40W之间有多少含有1的数,这些数的1的个数是多少?
含有1的数字:
1 位数 1
2 位数 10+9=19
3 位数 100+9*19 =271
4 位数 1000+9*271 = 3439
5 位数 10000+9*3439 = 40951
6 位数 100000 * 9*40951 = 468559
40w = 468559 – 6*40950 = 222853
共有多少个1:
1 位数 1
2 位数 11+9=20
3 位数 100+20 + 9*20 =300
4 位数 1000+300+ 9* 300 = 4000
5 位数 50000
6 位数 600000
40w = 600000 – 50000*6 = 300000
3) n个数 从大到小,求每个数之前的所有素数 是多少。
从2开始,往后一次计算,看哪个数除以i==0,那么把这个数删除掉。
这样走到那个数的时候就知道,它前面有多少个素数了。