回溯法:求和
阿新 • • 發佈:2018-09-19
要求 int 示例 push UNC mes std include class
題目描述
輸入兩個整數 n 和 m,從數列1,2,3.......n 中隨意取幾個數,使其和等於 m ,要求將其中所有的可能組合列出來輸入描述:
每個測試輸入包含2個整數,n和m
輸出描述:
按每個組合的字典序排列輸出,每行輸出一種組合示例1
輸入
5 5
輸出
1 4
2 3
5
#include<iostream> #include<vector> using namespace std; void func(int n,int m,vector<int>&result,int beg) { if(m==0) { for(int i=0;i<result.size();i++) { i==0?cout<<result[i]:cout<<" "<<result[i]; } cout<<endl; } for(int i=beg;i<=n&&i<=m;i++) { result.push_back(i); func(n,m-i,result,i+1); result.pop_back(); } } int main() { int n,m; cin>>n>>m; vector<int>result; func(n,m,result,1); return 0; }
回溯法:求和