#include<iostream> #include<vector> using namespace std; typedef vector<int> data; vector<data> ans; void make(data d, int n){ if(n == 0){ ans.push_back(d); return; } for(int i = 1;i <= n;i++){ if(d.size() > 0 && i > d.back()) continue; data t(d); t.push_back(i); make(t, n - i); } } int main(){ while(1){ int n; cin >> n; if(n == 0) break; make(data(), n); for(int i = ans.size() - 1;i >= 0;i--){ for(int j = 0;j < ans[i].size();j++){ cout << ans[i][j]; if(j != ans[i].size() - 1) cout << ' '; } cout << endl; } ans.clear(); } return 0; }
SyntaxHighlighter
StackEdit CSS
2012年12月9日日曜日
[AOJ]#507
もうすぐ情報オリンピックだから、頑張らないとなぁ
#DPできません...
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿