leetcode 673

https://www.cnblogs.com/Atanisi/p/7596135.html

参考这个文章的解释,写出了如下代码。

经典的动态规划问题,在动态规划的过程中还完成了统计是比较厉害的。这个我有时候处理不好,包括昨天的递归后数据还原的经典思想。

C部分的代码如下:

int findNumberOfLIS(int* nums, int numsSize) {
    int d[numsSize+1];
    int count[numsSize+1];
    for(int n=0;n<numsSize;n++)
    {
        d[n]=1;
        count[n]=1;
    }
    int max=0;
    for(int n=0;n<numsSize;n++)
    {
        for(int m=0;m<n;m++)
        {
            if(nums[n]>nums[m]&&d[m]+1>d[n])
            {
                d[n]=d[m]+1;
                count[n]=count[m];
            }
            else if(nums[n]>nums[m]&&d[m]+1==d[n])
            {
                count[n]+=count[m];
            }
        }
        max=max>d[n]?max:d[n];
    }
    int result=0;
    for(int n=0;n<numsSize;n++)
    {
        printf("%d;",count[n]);
        if(d[n]==max)
            result+=count[n];
    }
    return result;
}

另外还学习到的一点就是,memset对于char类型比较好用,或者用于清零。

其他类型会出问题。

具体链接如下:

http://blog.csdn.net/sunbaofeng2/article/details/7851853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值