码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 368

时间:2018-05-22 22:23:37      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:algo   while   nbsp   .cpp   pos   pac   一个   cpp   sort   

思路:

   首先想到是排序,因为题目说si%sj ==0 或者 sj%si==0,为了方便,可以升序排序,之后就可以只判断 si%sj(i>=j)就可以了

   dp[i] 表示0~i满足题目要求(也就是,每对数都可以整除)的最大集合。

   dp状态方程式:

         初始化dp[0...len] = 1;

         if(nums[i]%nums[j]==0)    dp[i] = max(dp[j]+1)   (0<j<i)

代码如下:(代码中添加了逆序,但实际上是不需要的,因为题目要求是求一个最大集合

//
//  main.cpp
//  leetcode 368
//
//  Created by jzc on 2018/5/22.
//  Copyright ? 2018年 jzc. All rights reserved.
//

#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> largestDivisibleSubset(vector<int>& nums) {
    sort(nums.begin(),nums.end());
    vector<int> result;
    vector<int> dp(nums.size(),1);//表示前j个最大集合
    vector<int> temp;
    for(int i=0;i<nums.size();i++)
    {
        int max =1;
        int k =i;
        for(int j=0;j<i;j++)
        {
            if(nums[i]%nums[j]==0)
            {
                if(dp[j]+1>max)
                {
                    max = dp[j]+1;
                    k = j;
                }
            }
        }
        dp[i] =max;
        temp.push_back(k);
    }
    int max_len = 0;
    int max_pos = 0;
    for(int i=0;i<nums.size();i++)
    {
        if(dp[i]>max_len)
        {
            max_len = dp[i];
            max_pos = i;
        }
    }
    int pos=max_pos;
    while(pos>=0)
    {
        result.push_back(nums[pos]);
        int pre = pos;
        pos = temp[pos];
        if(pre==pos)
            break;
    }
    reverse(result.begin(),result.end());
    for(int i=0;i<result.size();i++)
        cout<<result[i]<<endl;
    return result;
}
int main() {
    int a[6] = {2,3,2,4,4,8};
    vector<int> nums(a,a+6);
    largestDivisibleSubset(nums);
    return 0;
}

 

leetcode 368

标签:algo   while   nbsp   .cpp   pos   pac   一个   cpp   sort   

原文地址:https://www.cnblogs.com/jzcbest1016/p/9073926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!