zoukankan      html  css  js  c++  java
  • LeetCode OJ——Subsets

    http://oj.leetcode.com/problems/subsets/

    计算一个集合的子集,使用vector<vector<int> >,使用了进制的思想。

    #include<algorithm>
    #include<vector>
    #include<iostream>
    #include<cmath>
    using namespace std;
    
    class Solution {
    private:
    	void myoutput(vector<int> &input)
    		 {
    			 for(int i=0;i<input.size();i++)
    				 cout<<input[i]<<" ";
    		 }
        int mypow(int i)
    	{
    		if(i ==0 )
    			return 1;
    		int ret = 1;
    		while(i--)
    			ret *= 2;
    		return ret;
    	}
    	
    public:
    	vector<vector<int> > subsets(vector<int> &S) {
    		// Note: The Solution object is instantiated only once and is reused by each test case.
    		
    		sort(S.begin(),S.end());
            //myoutput(S);
    		int sum = mypow(S.size());
    		//cout<<sum<<endl;
    	    //cout<<sum<<"sum"<<endl;
    
    		vector<vector<int> > result;
    		result.clear();
    
    		sum--;
     
    		vector<int> tep_result;
    		for(int i = sum;i>0;i--)
    		{
    			tep_result.clear();
    			int _sum = i;
    			int digit = 0;
    			while(_sum!=0)
    			{
    
    				if(_sum%2==1)
    					tep_result.push_back(S[digit]);
    				digit++;
    				_sum /= 2;
    			}
    			result.push_back(tep_result); 
    			//二维vector的使用方式,是直接添加一维的
     
    		}
    		tep_result.clear();
    		result.push_back(tep_result); 
    		//for(int j = 0;j<result.size();j++)
    		//{
    		//cout<<"this:";
    		//myoutput(result[j]);
    		//cout<<endl;
    		//} 
    
    		return result;
    	}
    };
    
    
    
    
    
    #include<iostream>
    #include"solu.h"
    using namespace std;
     
    int main()
    {   
    	Solution *so = new Solution;
    	vector<int> input;
    	input.clear();
    	/*input.push_back(3);
    	input.push_back(1);
    	input.push_back(2);
    	input.push_back(5);*/
    	so->subsets(input);
    
    	//cout<<"ok"<<endl;
    	if(so!=NULL)
    		delete so;
    	so = NULL;
    	return 0;
    }
    

      

  • 相关阅读:
    为lvm逻辑分区扩容
    Linux性能优化课程笔记-CPU性能工具
    Linux性能优化课程笔记-bcc工具
    nmcli命令添加bond网口
    IPv6地址冲突
    mongodb的审计功能
    BIND支静态存根区域
    git的使用(2)
    全世界都在学python-打开文件
    java操作mongodb时,对象bean和DBObject相互转换的方法
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3377884.html
Copyright © 2011-2022 走看看