请教组合算法

VF 2012-10-23 04:42:53
数组A【a1,a2,a3】 数组B【b1,b2】 数组C【c1】,从数组A,B,C中各抽取一个值进行组合,这个算法是叫什么?如何实现?可能会存在数组D,数组E...,所以不能单纯做嵌套循环实现
...全文
94 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
VF 2012-10-23
  • 打赏
  • 举报
回复
恩,可以这么说,n是不固定的,我已经解决了,一下子没想起来,其实就是笛卡尔积

算法如下:


public static List<List<String>> matrix(List<List<String>> list) {
List<List<String>> result = new ArrayList<List<String>>();
List<String> str = list.get(0);
for (String s : str) {
List<String> tmp = new ArrayList<String>();
tmp.add(s);
result.add(tmp);
}
List<List<String>> store = new ArrayList<List<String>>();
for (int i = 1; i < list.size(); i++) {
List<String> start = list.get(i);
for (int j = 0; j < result.size(); j++) {
List<String> rns = result.get(j);
for (int k = 0; k < start.size(); k++) {
List<String> mid = new ArrayList<String>();
mid.addAll(rns);
mid.add(start.get(k));
store.add(mid);
}
}
result.clear();
result.addAll(store);
store.clear();
}
return result;
}
raistlic 2012-10-23
  • 打赏
  • 举报
回复

有 n 个数组,从其中随机抽取 m 个数组,然后这 m 个数组各抽取一个值进行组合,是这样吗?
内容概要:本文档为程序设计基础上机测试题集1,涵盖多个编程练习题目,包括但不限于:发奖金(优化纸币组合)、求闰年数(计算指定年份内的闰年总数)、猴子吃桃(使用倒推法解决递减问题)、小游戏(判断数字之和是否为特定数值的倍数)、考拉兹猜想(验证数学猜想并打印序列)、凯撒密码(实现简单的字符加密算法)、百钱买百鸡(解决古代数学问题)、素数判定(判断输入是否为素数)、计算平均成绩统计不及格人数(处理学生成绩数据)以及打印数字图案(根据输入生成特定格式的数字矩阵)。每个题目都提供了具体的输入输出示例和C/C++代码实现。 适合人群:计算机专业学生或具有一定编程基础的学习者,尤其是正在学习C/C++语言和基础算法的人群。 使用场景及目标:①作为课堂作业或课后练习,巩固所学知识;②用于编程入门考试或竞赛准备;③帮助初学者理解常见算法思想和编程技巧,提高解决问题的能力。 阅读建议:建议读者先尝试独立完成每个题目,之后再参考提供的代码实现,对比自己的思路与标准答案之间的差异,注意代码规范性和效率优化。对于不太理解的地方,可以通过查阅相关资料或向老师请教来加深理解。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧