1091:求阶乘的和

题目链接:点击这里

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0;
    for(int i = 1; i <= n; i++)
    {
        int fac = 1;                    //求i!
        for(int j = 1; j <= i; j++)
            fac *= j;
        sum += fac;                     //累加i!
    }
    
    cout << sum << endl;
    return 0;
}
#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0, fac = 1;
    for(int i = 1; i <= n; i++)
    {
        fac *= i;           //求i! 
        sum += fac;         //累加i!
    }
    
    cout << sum << endl;
    return 0;
}

算法效率如何度量?

  1. 事后统计
  2. 事前分析

步骤:

  1. 找到执行次数最多的语句
  2. 计算语句执行次数的数量级
  3. 用大О来表示结果

分析下面程序的功能,并计算时间复杂度?

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0;
    for(int i = 1; i <= n; i++)
        sum += i * i * i;
    
    cout << sum << endl;
    return 0;
}

对比下面两个程序的功能,分别计算时间复杂度?

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = 0;
    for(int i = 1; i <= n; i++)
        sum += i;
    
    cout << sum << endl;
    return 0;
}
#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int sum = (n + 1) * n / 2;
    
    cout << sum << endl;
    return 0;
}

计算下面三个程序的结果及其时间复杂度?

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a++;    
    }
    for(int i = 0; i < n; i++)
    {
        a--;
    }
    
    cout << a << endl;
    return 0;
}
#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a--;
        for(int i = 0; i < n; i++)
        {
            a++;
        }
    }
    
    cout << a << endl;
    return 0;
}
#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    
    int a = 0;
    for(int i = 0; i < n; i++)
    {
        a--;
        for(int i = 0; i < n; i++)
        {
            a++;
        }
    }
    
    int sum = 0;
    for(int i = 1; i <= a; i++)
        sum += i;
    
    cout << sum << endl;
    return 0;
}

并列:总复杂度等于量级最大的那段代码的复杂度。

嵌套:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容