Tips:
- 学习算法最好的方法并不是编写程序,而是手算
- 千万不要图快——如果没有足够的时间来实践,那么学的快,忘的也快
- 手工模拟的方法重点在于:记录每条语句执行之后各个变量的值
- 黑盒测试:只考察解决问题的能力,而不关心采用了什么方法
- 伪代码:在实际应用中并不太拘泥于伪代码的格式,主要目的是描述算法梗概,避开细节,启发思路
- 尽量缩短变量的定义范围
- 保持程序简单 Keep It Simple and Stupid
1. 精确数值
1 const double pi = acos(-1.0); //精确取 π 值 2 //输出所有形如aabb的完全平方数。注意:a 的范围是1 ~ 9,但 b可以是 0 3 //方法一: 4 for(int a=0; a<=9; a++) 5 { 6 for(int b=0; b<=9; b++) 7 { 8 int n = a*1100+b*11; 9 int m = floor(sqrt(n)+0.5); 10 if(m*m == n) printf(“%d\n”, n); 11 } 12 } 13 //floor函数只取整数位,小数位舍弃 14 //floor(x+0.5)为了四舍五入 不过这样小数部分0.5也会有误差 15 //因此不能写 if( sqrt(n) == floor(sqrt(n)) ) printf(“%d\n”,n); 16 17 //方法二: 18 for(int x=1; ;x++) 19 { 20 int n = x*x; 21 if (n < 1000) continue; 22 if (n > 9999) break; 23 int hi = n/100; 24 int lo = n%100; 25 if(hi/10 == hi%10 && lo/10 == lo%10) printf(“%d”,n); 26 }
时间: 2025-01-01 21:10:27