阅读背景:

在一个数组中找到等于某个数的组合

来源:互联网 

方法1:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<vector>
#include <algorithm>
#include<iostream>
using namespace std;

void getResult(vector<int> a,int result) 
{
	sort(a.begin(),a.end());
	int nLen = a.size();
	for (int i = 0; i < nLen; i++) 
	{
		if (a[i] == result)
			cout<<a[i]<<endl;
		for (int j = i + 1; j < nLen; j++) 
		{
			if (a[i] + a[j] > result)
				break;
			if (a[i] + a[j] == result)
			{
				cout<<a[i]<<"+"<<a[j]<<endl;
			} 
			else 
			{
				for (int k = j + 1; k < nLen; k++)
				{
					if (a[i] + a[j] + a[k] > result)
						break;
					if (a[i] + a[j] + a[k] == result) 
					{
						cout<< a[i]<< "+"<<a[j]<<"+"<<a[k]<<endl;
					} 
					else
					{
						for (int l = k + 1; l < nLen; l++)
						{
							if (a[i] + a[j] + a[k] + a[l] > result)
								break;
							if (a[i] + a[j] + a[k] + a[l] == result)
								cout<<a[i]<<"+"<< a[j]<< "+" <<a[k]<<"+"<<a[l]<<endl;
							//else继续,有点复杂。 
						}
					}
				}
			}
		}
	}
}

void main() 
{
	vector<int> a;
	a.push_back(11);
	a.push_back(2);
	a.push_back(3);
	a.push_back(1);
	a.push_back(4);
	a.push_back(10);
	a.push_back(23);
	a.push_back(7);
	a.push_back(8);
	a.push_back(9);
	a.push_back(6);
	a.push_back(12);
	getResult(a,10);
	system("pause");
}
#include<stdio.h>
#include<stdlib.h>
#in



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: