笛卡尔乘积算法的体现
生活随笔
收集整理的這篇文章主要介紹了
笛卡尔乘积算法的体现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個商品有多項屬性,多項屬性的組合就產生不同的商品型號如:
衣服:
??? 顏色:紅、綠
??? 尺寸:大、中、小
產生的系列就有:紅|大、紅|中、紅|小、綠|大、綠|中、綠|小
如果商品的屬性不至兩個,則產生的系列會更多, A|B|C|D......
其實這是一個笛卡爾的乘積
如果再多一個屬性(衣料): 綿、布、錦 ,也可以與上面的結果相乘,得
這樣就算有再多的屬性也可以隨機生成結果,以下的實現的代碼:
????????/**////?<summary>
????????///?獲取商品屬性組合后的列表
????????///?</summary>
????????///?<param?name="attrList">屬性列表數組,數組內的成員以‘|’分隔</param>
????????///?<returns>返回屬性組合后的列表</returns>
????????private?static?IList<string>?GetProductModelList(IList<string>?attrList)
????????{
????????????IList<string>?productArray?=?new?List<string>(attrList[0].Split('|'));
????????????for?(int?i?=?1;?i?<?attrList.Count;?i++)
????????????{
????????????????productArray?=?JoinPart(productArray,?attrList[i].Split('|'));
????????????}
????????????return?productArray;
????????}
????????//笛卡爾乘積
????????private?static?IList<string>?JoinPart(IList<string>?part1,?string[]?part2)
????????{
????????????IList<string>?result?=?new?List<string>();
????????????foreach?(string?str1?in?part1)
????????????{
????????????????foreach?(string?str2?in?part2)
????????????????{
????????????????????result.Add(str1?+?"|"?+?str2);
????????????????}
????????????}
????????????return?result;
????????}
衣服:
??? 顏色:紅、綠
??? 尺寸:大、中、小
產生的系列就有:紅|大、紅|中、紅|小、綠|大、綠|中、綠|小
如果商品的屬性不至兩個,則產生的系列會更多, A|B|C|D......
其實這是一個笛卡爾的乘積
| 紅 | 綠 | |
| 大 | 紅|大 | 綠|大 |
| 中 | 紅|中 | 綠|中 |
| 小 | 紅|小 | 綠|小 |
如果再多一個屬性(衣料): 綿、布、錦 ,也可以與上面的結果相乘,得
| 紅|大 | 紅|中 | 紅|小 | 綠|大 | 綠|中 | 綠|小 | |
| 綿 | 紅|大|綿 | 紅|中|綿 | 紅|小|綿 | 綠|大|綿 | 綠|中|綿 | 綠|小|綿 |
| 布 | 紅|大|布 | 紅|中|布 | 紅|小|布 | 綠|大|布 | 綠|中|布 | 綠|小|布 |
| 錦 | 紅|大|錦 | 紅|中|錦 | 紅|小|錦 | 綠|大|錦 | 綠|中|錦 | 綠|小|錦 |
這樣就算有再多的屬性也可以隨機生成結果,以下的實現的代碼:
????????/**////?<summary>
????????///?獲取商品屬性組合后的列表
????????///?</summary>
????????///?<param?name="attrList">屬性列表數組,數組內的成員以‘|’分隔</param>
????????///?<returns>返回屬性組合后的列表</returns>
????????private?static?IList<string>?GetProductModelList(IList<string>?attrList)
????????{
????????????IList<string>?productArray?=?new?List<string>(attrList[0].Split('|'));
????????????for?(int?i?=?1;?i?<?attrList.Count;?i++)
????????????{
????????????????productArray?=?JoinPart(productArray,?attrList[i].Split('|'));
????????????}
????????????return?productArray;
????????}
????????//笛卡爾乘積
????????private?static?IList<string>?JoinPart(IList<string>?part1,?string[]?part2)
????????{
????????????IList<string>?result?=?new?List<string>();
????????????foreach?(string?str1?in?part1)
????????????{
????????????????foreach?(string?str2?in?part2)
????????????????{
????????????????????result.Add(str1?+?"|"?+?str2);
????????????????}
????????????}
????????????return?result;
????????}
轉載于:https://www.cnblogs.com/ghx88/archive/2007/01/29/633655.html
總結
以上是生活随笔為你收集整理的笛卡尔乘积算法的体现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用Linux命令--CPU和GPU查看
- 下一篇: Ubuntu下如何查看GPU版本和使用信