SyntaxHighlighter

StackEdit CSS

2012年12月9日日曜日

[AOJ]#507

もうすぐ情報オリンピックだから、頑張らないとなぁ #DPできません...
#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;
}

0 件のコメント:

コメントを投稿