C++实例化对象及语法问题

本问题是一个求最大子序列的动态规划问题,现在用C++语言处理,并讲述一些语法问题

#include
using std::vector;
class Solution {
public:
    int maxSubArray(vector& nums) {
        if (nums.size() <= 0) return -1;
        int maxSum = nums[0];
        int *dp = new int[nums.size()];
        dp[0] = nums[0];
        for (int i = 1; i < nums.size(); ++i) {
            if (dp[i - 1] < 0) {
                dp[i] = nums[i];
            }
            else {
                dp[i] += nums[i];
            }
            if (maxSum < dp[i]) maxSum = dp[i];
        }
        return maxSum;
    }
};
void main() {//由于C++的类也是一个由分号结束的语句,所以主函数main不能写在类里面,否则找不到入口
    Solution *s = new Solution();  //堆区申请存储地址,*s对象不会结束自己的生命。你必须手动调用delete s;如果不调用delete,则会造成内存泄漏
    vector *nums = new vector({ 1,-2,9,-20,6 });
    int a = s->maxSubArray(*nums);
    Solution sb;  //在栈区申请对象实例的空间,当函数执行结束后,sb会自动调用Solution的析构函数,结束自己的生命
    sb.maxSubArray(*nums);
    printf("%d", a);
    system("pause");
    delete s;
}

你可能感兴趣的:(C++实例化对象及语法问题)