DS学习笔记coursera(2/6;1/6)

课程名称:Algorithmic Toolbox
课程内容:Data Structures and Algorithms
课程网址:https://www.coursera.org/learn/algorithmic-toolbox/home/week/1
课程进度:Week2

Week 2

Week2

Why Study Algorithms?
Perform执行,工作,运转,表演
Complicated复杂的
Sophisticated复杂的,先进的,精密的,老练的
Optimize优化
Interpret解释,口译,说明
Vague模糊的,含糊的,不明确的
Intuitive直觉的,易懂的
Solid固体的,固体,不间断地
Formulate制定,规划,准备
Nontrivial非平凡,不容易的

Coming Up
Weird奇怪的,诡异的
Theoretic理论的
Numerical数字的
Modest谦虚的,谦逊的
Instance实例,例子

Problem Overview
Property财产,性质,所有物
Recursive递归的
Fibonacci number
Reproduce再现,复制,繁殖
Inductive归纳的
Bound跳跃,蹦跳
Exponentially以指数方式

Naive Algorithm
在这里插入图片描述
Extreme极端的,极度的,极端,极限

Efficient Algorithm
在这里插入图片描述
Trivial琐碎的,微不足道的,不重要的
Divisor除数
Resource资源 source来源

Problem Overview and Naive Algorithm
Fraction分数,小部分,小数
Numerator分子
Denominator分母
Equivalent相同的,相等的
GCD最大公约数 GCD(10,4)=2
Factorization因式分解,因子分解
Cryptographic密码学
在这里插入图片描述

Efficient Algorithm
Euclidean Algorithm欧几里得算法
Remainder余数
Lemma引理,辅助定理在这里插入图片描述在这里插入图片描述在这里插入图片描述
Terminate终止,结束

Computing Runtimes
In particular特别,尤其
Complication并发症,更难的事物
Shuffle洗牌,变换位置,打乱次序
Allocate分配
Entire整个的,完全的,全部的
Circumstance环境,条件,状况
Optimization优化
Hierarchy等级制度,层次体系

Asymptotic Notation
Asymptotic渐近的,渐近线的
Precise精确的
规避常数级的runtime影响
Proportional成比例的,相称的,均衡的
Exponential指数的
Sufficient足够的,充分的
Gigahertz千兆赫,十亿赫
Logn < 根号n < n < nlogn < n^2 < 2^n

Big-O Notation
Notation符号,记号
在这里插入图片描述在这里插入图片描述在这里插入图片描述
Multiple倍数
Moderate中等的,适度的,温和的

Using Big-O
2squared 2的平方 2cubed 2的三次方 root2 根号2
Polynomial多项式的,多项式
Modestly谨慎地
Modest谦虚的,谦逊的,朴素的
Reasonable合理的,有理由的,公平的
Eventually最后,终于
Premise前提,假定
在这里插入图片描述
Occasional偶尔的在这里插入图片描述在这里插入图片描述
Extensive广泛的,大量的
Ought to应该,应当

Course Overview
Reduction减少,降低
Three of the most common algorithmic design techniques: Greedy Algorithms贪心算法, Divide and Conquer分治, Dynamic Programming动态规划
Optimal最佳的,最优的
Enumerate枚举
Optimize优化,充分利用
Technique技术,工艺,技巧
Insight了解,洞察力,洞悉,领悟
Occupation工作,职业

Week2coding
在这里插入图片描述
#include

using namespace std;

/*long long int Fibonacci(long long int n)
{
if(n<=1)
return n;
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
*/

long long int Fibonacci(long long int n)
{
long long int i,a=0, b=1, c;
if (n == 0 || n == 1)
return n;
else
{
for(i=0;i<n-1;i++)
{
c=a+b;
a=b;
b = c;
}
return c;
}
}

int main()
{
long long int n,result;
cin >> n;
result = Fibonacci(n);
cout << result;
return 0;
}
递归耗时比较长会TLE,大数考虑使用longlongint,int局限太大。此题已AC。

在这里插入图片描述
#include

using namespace std;

int main()
{
int i,n, a, b, c;
a = 0;
b = 1;
cin >> n;
if(n0||n1)
{
cout << n;
return 0;
}
for(i=0;i<n-1;i++)
{
c = (a+b)%10;
a=b%10;
b = c%10;
}
cout << c;
return 0;
}
只看个位数,使用int也可以规避大数问题,01单独讨论。此题已AC。

在这里插入图片描述
#include

using namespace std;

int Fibonacci(int n)
{
if (n <= 1)
return n;
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}

int main()
{
int n,m, result;
cin >> n >> m;
result = Fibonacci(n);
cout << result%m;
return 0;
}
此题TLE。

在这里插入图片描述
#include

using namespace std;

int main()
{
int n, i = 0,sum=0;
cin >> n;
int a=0, b=1, c;
if(n0||n1)
{
cout << n;
return 0;
}
for(i=0;i<n-1;i++)
{
c = (a + b) % 10;
a=b%10;
b = c % 10;
sum += c;
}
cout << (sum+1)%10;
return 0;
}
此题TLE。

在这里插入图片描述
#include

using namespace std;

int Fibonacci(int n)
{
if (n <= 1)
return n;
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}

int main()
{
int i,m,n, sum1=0,sum2=0;
cin >> m >> n;
for(i=0;i<=m;i++)
{
sum1 += Fibonacci(i);
}
for (i = 0; i <= n;i++)
{
sum2 += Fibonacci(i);
}
cout << (sum2-sum1+Fibonacci(m))%10;
return 0;
}
此题TLE

在这里插入图片描述
#include

using namespace std;

long long int Fibonacci(long long int n)
{
if (n <= 1)
return n;
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}

int main()
{
long long int i,n, result;
cin >> n;
for(i=0;i<=n;i++)
{
result += ((Fibonacci(i)%10)*(Fibonacci(i)%10))%10;
}
cout << result%10;
return 0;
}
此题WA。

在这里插入图片描述
#include

using namespace std;

long long int GCD(int a,int b)
{
if(b==0)
return a;
else
{
return GCD(b, a % b);
}
}

int main()
{
long long int a,b,gcd;
cin >> a >> b;
gcd=GCD(a, b);
cout << gcd;
}
最大公约数采用欧几里得算法,注意大数情况采用了longlongint。此题已AC。

在这里插入图片描述
#include

using namespace std;

long long int GCD(int a, int b)
{
if (b == 0)
return a;
else
{
return GCD(b, a % b);
}
}

int main()
{
long long int a, b, gcd;
cin >> a >> b;
gcd = GCD(a, b);
cout << a * b / gcd;
return 0;
}
最小公倍数LCM=ab最大公约数gcd。此题已AC。但是原理需要挖掘。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值