- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
236 :デフォルトの名無しさん[sage]:2016/01/21(木) 08:12:31.11 ID:7s6F6whZ - >>235
そういうアルゴリズムがあるのかは知らないが、例えば再起関数とかでできる #include <iostream> #include <vector> using Vector = std::vector<int>; void Func(size_t a, size_t m, size_t movingTarget, size_t start, Vector* pbuff, std::vector<Vector>* pdest) { if(movingTarget != a){ for(size_t i = start; i < m; ++i){ (*pbuff)[i] += 1; Func(a, m, movingTarget+1, i, pbuff, pdest); (*pbuff)[i] -= 1; } } else { pdest->push_back(*pbuff); return; } } int main() { size_t a, m; std::cin >> a >> m; Vector buff(m, 0); std::vector<Vector> dest; Func(a, m, 0, 0, &buff, &dest); return 0; }
|