从每组中依次选择一个元素
从每组中依次选择一个元素
假设有N组元素,从N组中依次选取一个元素组成一个序列。假如N组元素的个数依次为A1,A2,…,AN,那么得到的序列数应该为A1*A2*…*AN。
下面我们关注的是如何生成A1*A2*…*AN个序列。由于N是个变量,如果是用N个循环实现,只能针对特定的N个组的情况。并且如果N很大时,实现起来不现实。
这里我们采用递归的方法来实现。
// 递归实现 #include <iostream> #include <vector> #include <string> using namespace std; void foo(const vector<vector<string> >& src, int x, int n, int& total, vector<vector<string> >& obj, vector<string>& hod) { for (vector<string>::size_type i = 0; i != src[x-1].size(); ++i) { if (x == n) { hod.push_back(src[x-1][i]); ++total; obj.push_back(hod); hod.pop_back(); } else { hod.push_back(src[x-1][i]); foo(src, x+1, n, total, obj, hod); hod.pop_back(); } } } int main() { vector<vector<string> > src; vector<string> tmp; tmp.push_back("a"); tmp.push_back("b"); tmp.push_back("c"); src.push_back(tmp); tmp.clear(); tmp.push_back("h"); tmp.push_back("i"); tmp.push_back("j"); src.push_back(tmp); tmp.clear(); tmp.push_back("s"); tmp.push_back("t"); tmp.push_back("u"); tmp.push_back("v"); src.push_back(tmp); tmp.clear(); tmp.push_back("x"); tmp.push_back("y"); tmp.push_back("z"); src.push_back(tmp); tmp.clear(); int total = 0; vector<vector<string> > obj; vector<string> hod; foo(src, 1, src.size(), total, obj, hod); for (vector<vector<string> >::size_type i = 0; i != obj.size(); ++i) { for (vector<string>::size_type j = 0; j != obj[i].size(); ++j) { cout << obj[i][j] << ' '; } cout << endl; } cout << total << endl; cout << obj.size() << endl; cout << hod.size() << endl; system("PAUSE"); return 0; }
(完)
文档信息
·版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
·博客地址:http://www.cnblogs.com/unixfy
·博客作者:unixfy
·作者邮箱:goonyangxiaofang(AT)163.com
·如果你觉得本博文的内容对你有价值,欢迎对博主 小额赞助支持
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 想让你多爱自己一些的开源计时器
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 如何在 .NET 中 使用 ANTLR4