陣列中和為某一個定值
阿新 • • 發佈:2019-01-25
#include<iostream> #include<vector> #include <algorithm> using namespace std; void findpath(vector<int> a,vector<int> path,int n,int start,int sum){ for(int i=start;i<n;i++){//從第一個數開始遍歷 sum-=a[i]; path.push_back(i); if(sum==0){//說明找到了滿足要求的一條路徑 for(int j=0;j<path.size();j++){ cout<<a[path[j]]<<" "; } cout<<endl; path.clear(); } else if(sum>0){//目前的和小於要求的和,要繼續往後找 findpath(a,path,n,i+1,sum); } sum+=a[i];//如果和大於了sum,說明當前這個數不能加入路徑裡 if(path.size()>0)path.pop_back(); } } int main(){ int n; cin>>n; int temp; vector<int> data; for(int i=0;i<n;i++){ cin>>temp; data.push_back(temp); } int sum; cin>>sum; vector<int> allpath; findpath(data,allpath,n,0,sum); cin.get(); cin.get(); return 0; }