例如:现在有一批鞋子,其中颜色有[‘白色’,‘黑色’,‘灰色’];大小有[‘40’,‘41’,‘42’],样式有[‘板鞋’,‘运动’,‘休闲’],要求写一个算法,实现[[‘白色’,‘40’,‘板鞋’], [‘白色’,‘42’,‘休闲’] …]这样的组合

代码如下

QList<QVector<QPointF>> xx::getAllGroup(QList<QVector<QPointF>> val){
int oriSize = val.size(); QVector<int> tempIndexArr(oriSize);
tempIndexArr[oriSize - 1] = -1;
QVector<int> tempLengthArr(oriSize);
for (int i = 0; i < oriSize; i++){
tempLengthArr[i] = val[i].size();
} QList<QVector<QPointF>> newList;
bool completeFlag = false;
while (!completeFlag){
int changeIndex = val.size() - 1;
bool isRightIndex = false;
while (!isRightIndex){
tempIndexArr[changeIndex] += 1;
if (tempIndexArr[changeIndex] >= tempLengthArr[changeIndex]){
if (changeIndex == 0){
isRightIndex = true;
completeFlag = true;
}
else{
tempIndexArr[changeIndex--] = 0;
}
}
else{
isRightIndex = true;
}
}
if (isRightIndex && !completeFlag){
QVector<QPointF> pointVec;
for (int i = 0; i != val.size(); i++){
pointVec.push_back(val[i][tempIndexArr[i]]);
}
newList.push_back(pointVec);
}
}
return newList;
}

原文来自微信公众号"程序员成长日志",已经工作的程序员朋友可以关注下公众号“程序员成长日志”,分享日常工作中解决的问题即可赚取稿费,大家一起成长~

最新文章

  1. WinForm常用事件
  2. jdbctemplate中的批量更新使用,BigDecimal与造型的联系和区别
  3. Caffe学习系列(17): caffe源码分析 vector&lt;Blob&lt;Dtype&gt;*&gt;&amp; bottom(转)
  4. [转]word2vec使用指导
  5. ViewPager +Fragment 滑动游标
  6. 二模 (6) day2
  7. iOS 自定义view里实现控制器的跳转
  8. 基于Linux的owncloud搭建
  9. BZOJ2140: 稳定婚姻
  10. 2015北京网络赛B题 Mission Impossible 6
  11. vim字符编码设置
  12. [Boost::Polygon]多边形相减得到新的多边形序列
  13. spring boot 实践
  14. POJ2533 Longest Ordered Subsequence 【最长递增子序列】
  15. .Net使用JsonSchema验证Json
  16. nginx部署dotnet core站点
  17. python中shelve模块的使用
  18. 分析abex-crackme#1
  19. SQL 必知必会&#183;笔记&lt;14&gt;更新和删除数据
  20. 和我一起学Effective Java之类和接口

热门文章

  1. SpeedButton
  2. window 下 jmeter+ant 自动生成html报告并发送邮件
  3. 【题解】POJ3041 Asteroids - 图论 - 二分图匹配
  4. python之elasticsearch查询
  5. 树莓派3b在rt-thread上移植LittlevGL
  6. springmvc配置数据源方式
  7. ES6中的let关键字,有什么用呢?
  8. tp5--数据库查询的常用操作
  9. [Qt] Release模式下产生调试信息
  10. qt tableview 选择模式