C# 组合取值

private void button3_Click(object sender, EventArgs e) { List<int> list = new List<int> { 0, 1, 2, 5, 8, 4, 12, 32 }; string sResult = string.Empty; int iTemp = 0; GetCombination(list,2,ref sResult, ref iTemp);// 最终结果放在 sResult中 Common.DisplayMsg(this.Text, sResult); } // list为源,iItemCount表示取出几个元素,sTemp 为最终结果 // iTemp为临时变量,没有实际意义;iIndex 表示第几轮递归,也没有实际意义 private void GetCombination(List<int> list,int iItemCount,ref string sTemp,ref int iTemp,int iIndex=0) { ArrayList arrTemp = new ArrayList(); if (iItemCount <= 0) return; if (iIndex == list.Count) return; int iTempNothing = 0;//用于后面作为判断取出元素的标识,也没有实际意义 for (int i = iIndex; i < list.Count; i++) { iTemp++; if (!arrTemp.Contains(list[i])) { arrTemp.Add(list[i]); } if (arrTemp.Count == iItemCount ) { sTemp += "["; iTempNothing = iItemCount; while ((iTempNothing--)>=1) { sTemp += arrTemp[iTempNothing] + ","; } sTemp = sTemp.TrimEnd(','); sTemp += "]"; arrTemp.RemoveAt(iItemCount-1);//删除 最后一个元素 } if (iTemp == list.Count) { sTemp += Convert.ToChar(Keys.Return); iIndex++; iTemp = iIndex; arrTemp.Clear(); GetCombination(list, iItemCount,ref sTemp, ref iTemp, iIndex); } } } public static void DisplayMsg(string sCaption, string sMsg) { sMsg = sMsg.TrimEnd('!').TrimEnd('!') + " !"; MessageBox.Show(sMsg, sCaption); }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值