zoukankan      html  css  js  c++  java
  • [置顶] 最近面试的算法题目

    一个集合x有都不相同的n个元素,使用这个集合中的不定个数的元素,组成一个和为s的序列,求出所有符合的序列,元素可以重复使用,只要元素的个数相同不考虑顺序。

    比如集合是x={2,3,4,5,7}; n=5, s=12可以得出以下的序列:

    2       2       2       2       2       2
    2       2       2       2       4
    2       2       2       3       3
    2       2       3       5
    2       2       4       4
    2       3       3       4
    2       3       7
    2       5       5
    3       3       3       3
    3       4       5
    4       4       4
    5       7

    
    


    #include <iostream>
    #include <vector>
    using namespace std;
    int PushVector(int *x,int n,int s,vector<int> &tablelist,int Position)
    {
    	if(s<0)
    	{
    		tablelist.clear();
    		return 0;
    	}
    	else if(s==0)
    	{
    		for(int i=0;i<tablelist.size();i++)
    		{
    			cout<<tablelist[i]<<"	";
    		}
    		cout<<"
    ";
    		
    		return 0;
    	}
    	else if(s>0)
    	{
    		for(int i=Position;i<n;i++)
    		{
    			vector<int> newtablelist;
    			for (int j=0;j<tablelist.size();j++)
    			{
    				newtablelist.push_back(tablelist[j]);
    			}
    			newtablelist.push_back(x[i]);
    			int news = s-x[i];
    			//cout<<i<<","<<news<<"
    ";
    			PushVector(x,n,news,newtablelist,i);
    		}
    
    
    	}
    	else
    	{
    
    
    	}
    	return 0;
    }
    
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    int FindResult(int * x,int n,int s)
    {
    	vector<int> tablelist;
    	tablelist.clear();
    	PushVector(x,n,s,tablelist,0);
    	return 0;
    }
    
    
    
    
    int main(int argc, char** argv) 
    {
    	int x[]= {2,3,4,5,7};
    	int n =5;
    	int s=12;
    	FindResult(x,n,s);
    	system("pause");
    	return 0;
    }


    下面附上截图:


    好了这就是我们的全部解法,这个问题就是一个递归遍历的问题。

  • 相关阅读:
    html5 audio的语法以及属性和方法
    转自可可英语的文章,以激励我努力学习英语。
    Linux下怎么删除非空目录
    Unity脚本时间执行顺序
    一个高手很多同时又能学习英语的问答网站
    Unity中Time.deltaTime的含义及其应用
    用C++画心(转)
    web中将body占满整个页面的办法
    基于FPGA的LCD+CMOS视频采集显示使用小结
    基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3268503.html
Copyright © 2011-2022 走看看