• 数据构造方法


    以最大连续子序列和算法为例。

    算法源代码:

     1 #include<bits/stdc++.h>
     2 #define N 1000000
     3 using namespace std;
     4 
     5 int n;
     6 int a[N],dp[N];
     7 int MAXN=-(1<<30);
     8 
     9 int main(){
    10     freopen("data.out","r",stdin);//重定向 
    11     cin>>n;
    12     for(int i=1;i<=n;i++){//读入数据 
    13         cin>>a[i];
    14     }
    15     dp[1]=a[1];//边界 
    16     for(int i=2;i<=n;i++){//核心代码 
    17         dp[i]=max(a[i],dp[i-1]+a[i]);//状态转移方程 
    18         MAXN=max(MAXN,dp[i]);//更新最优解 
    19     }
    20     cout<<MAXN;
    21     return 0;
    22 }

    数据生成代码(生成-50~49之间随机数据)

     1 #include<bits/stdc++.h>
     2 #define N 1000000 //数据规模(可调) 
     3 using namespace std;
     4 int main (){
     5    freopen("data.out","w",stdout);//重定向 
     6    int i,j;
     7    srand( (unsigned)time( NULL ) );//随机数种子 
     8    cout<<N<<endl;
     9    for(i=0;i<N;i++){//生成随机数 
    10       j= rand()%100-50;
    11       cout<<j<<" ";
    12    }
    13    return 0;
    14 }

    算法时间复杂度O(N),数据规模100w时运行时间大约0.65s,但是很明显还是不能支持数据规模1000w情况

    注意:

    1.两个代码中重定向的文件名称要保持一致,且两个cpp文件在同一文件夹下。

    2.使用时先执行下面代码,再执行上面代码,即可输出结果,打开重定向文件可查看生成数据。

  • 相关阅读:
    PyCharm设置改变字体大小的快捷键
    python中的字符串
    python入门知识
    css3(border-radius)边框圆角详解
    js中__proto__和prototype的区别和关系?
    常见的浏览器兼容问题
    Meta http-equiv属性详解(转)
    WinForm界面设计-Button添加背景图去边框
    vs2015 c# winfrom应用程序打包成64位
    vsto-Word相关操作
  • 原文地址:https://www.cnblogs.com/Wag-Ho/p/14824066.html
Copyright © 2020-2023  润新知