#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 件のコメント:
コメントを投稿