qt-n个数组实现排列组合
2024-09-18 22:35:51
例如:现在有一批鞋子,其中颜色有[‘白色’,‘黑色’,‘灰色’];大小有[‘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;
}
原文来自微信公众号"程序员成长日志",已经工作的程序员朋友可以关注下公众号“程序员成长日志”,分享日常工作中解决的问题即可赚取稿费,大家一起成长~
最新文章
- WinForm常用事件
- jdbctemplate中的批量更新使用,BigDecimal与造型的联系和区别
- Caffe学习系列(17): caffe源码分析 vector<;Blob<;Dtype>;*>;&; bottom(转)
- [转]word2vec使用指导
- ViewPager +Fragment 滑动游标
- 二模 (6) day2
- iOS 自定义view里实现控制器的跳转
- 基于Linux的owncloud搭建
- BZOJ2140: 稳定婚姻
- 2015北京网络赛B题 Mission Impossible 6
- vim字符编码设置
- [Boost::Polygon]多边形相减得到新的多边形序列
- spring boot 实践
- POJ2533 Longest Ordered Subsequence 【最长递增子序列】
- .Net使用JsonSchema验证Json
- nginx部署dotnet core站点
- python中shelve模块的使用
- 分析abex-crackme#1
- SQL 必知必会&#183;笔记<;14>;更新和删除数据
- 和我一起学Effective Java之类和接口