これを
#define extrep(v,...) for(auto v:make_mat_impl({__VA_ARGS__})) vector<vector<long long>> make_mat_impl(vector<long long> v){ if(v.empty())return vector<vector<long long>>(1,vector<long long>()); long long n=v.back(); v.pop_back(); vector<vector<long long>> ret; vector<vector<long long>> tmp=make_mat_impl(v); for(auto e:tmp)for(long long i=0;i<n;++i){ ret.push_back(e); ret.back().push_back(i); } return ret; }
こう
int main(){ extrep(v,3,4,5){ cout<<v[0]<<v[1]<<v[2]<<endl; } }
出力結果
000 001 002 003 004 010 011 012 013 014 020 021 022 023 024 030 031 032 033 034 100 101 102 103 104 110 111 112 113 114 120 121 122 123 124 130 131 132 133 134 200 201 202 203 204 210 211 212 213 214 220 221 222 223 224 230 231 232 233 234
内部でDFSしてるだけです