有段时间没更新了,已删英雄联盟,得找一点别的放松方式。
最近重心可能要放在6级上了(最后一舞)
进度:
1.语法基础第三章课+课后习题已做完
做题总结:
1.对于while()的看法:可以看做是n个if()语句的整合写法
2.利用杨辉三角证明:∑v的3次方 = (∑v)的平方。具体过程先种个草,等我高数开始复习了
顺带看一下
3.for()循环 核心思想:把控制循环次数的变量从循环体中剥离。
游龙流程:
4.求斐波那契数列的第n项:f(n) = f(n-1) + f(n-2)
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
int a =1, b =1;
if(N==1 || N ==2) cout << 1 <<endl;
else{
for(int i = 1; i <= N-2;i++){
int c = a + b;
a = b;//因为之后用到的是b,c(a+b)和待求项,所以原来a的值应该被覆盖为b
b = c;
}
}
cout << c << endl;
return 0;
}
5.如果对于输入的2个数a,b有大小要求,
可用swap(a,b)交换函数。
注意:引用库[HTML_REMOVED]
6.<最重要的一集>对于要求输入次数未知时如何处理?
while(cin >>x) //因为cin函数会返回一个值,如果输入结束位置(EOF) 会返回0
while(scanf("%d",&x) != -1) //因为scanf函数在读取到结束位置时,会返回-1。(即遇到EOF)
while(~scanf("%d",&x)) //目前没看懂,留个坑
如果要求最后输入0并且对0不做处理,则
while(cin >> x && x) 或 while(cin >> x,x)//逗号表达式:最右边的式子为总体的值
while(scanf("%d",&x)+1 && x != 0)//这个不确定对不对,好像把+1去了也没事
7.注意重置sum
见【AcWing 719. 连续奇数的和 2】
while(i <= N){
cin >> X >> Y;
if(X>Y) swap(X,Y);
sum = 0; //每次更换X,Y后,要把sum重置
for(int j = X+1; j<Y; j++){
if(j%2) sum += j;
}
cout << sum <<endl;
i++;
}
8.第一次遇到超时
见【AcWing 725. 完全数】
优化代码的思路:
(1)提前终止
(2)循环到平方根
9.n阶菱形
曼哈顿距离