0507-Square
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0507&lang=jp
再帰関数でがんばる。
stringが遅いのか、時間は微妙だった。
#include <cstdio> #include <string> #include <algorithm> #include <iostream> using namespace std; int s; string int2string(int v){ string res; string t; if(v==0) return "0"; while(v>0){ t='0'+(v%10); res=t+res; v/=10; } return res; } void putdata(int k,int m,string d){ if(k==0){ cout << d << endl; return; } for(int i=min(k,m);i>0;i--){ if(d==""){ putdata(k-i,i,int2string(i)); }else { putdata(k-i,i,d+" "+int2string(i)); } } } int main() { std::ios_base::sync_with_stdio(false); int n; while(1){ cin >> n; if(n==0)return 0; putdata(n,n,""); } }