UVA 574 - Sum It Up

来源:互联网 发布:c语言点滴 百度云 编辑:程序博客网 时间:2024/05/22 15:43
#include <iostream>#include <memory.h>#include <cstdio>#include <algorithm>#include <functional>#include <vector>using namespace std;#define MAX 13vector<int>stak;vector<vector<int> >ans;int t,n,nums[MAX];void backtraking(int curi,int sum){if(sum==t){vector<int>temp=stak;sort(temp.begin(),temp.end(),greater<int>());ans.push_back(temp);return;}else if(sum>t)return;else if(curi==n)return;stak.push_back(nums[curi]);backtraking(curi+1,sum+nums[curi]);stak.pop_back();backtraking(curi+1,sum);}int main(){while (scanf("%d%d",&t,&n)&&n){printf("Sums of %d:\n",t);ans.clear();for (int i=n-1;i>=0;--i)scanf("%d",&nums[i]);backtraking(0,0);sort(ans.begin(),ans.end(),greater<vector<int> >());//去重ans.erase(unique(ans.begin(),ans.end()),ans.end());if(ans.size()){for (int i=0;i<ans.size();++i){for (int j=0;j<ans[i].size();++j){if(j>0)printf("+");printf("%d",ans[i][j]);}printf("\n");}}else{printf("NONE\n");}}return 0;}

原创粉丝点击