算法复习2(全排序,从M取N个数) *不考虑重复数据

全排序

 1  static void AllSort(int[] arr, string rtnStr)
 2         {
 3             if (arr.Length == 0)
 4             {
 5                 Console.WriteLine(rtnStr);
 6                 return;
 7             }
 8 
 9             int i = -1;
10             string temp = rtnStr;
11 
12             while ((++i) < arr.Length)
13             {
14                 rtnStr = rtnStr + arr[i] + " ";
15 
16                 int[] rtnArray = GetNextArray(arr, i);
17                 AllSort(rtnArray, rtnStr);
18 
19                 rtnStr = temp;
20             }
21         }
22 
23         static int[] GetNextArray(int[] arr, int index)
24         {
25             int[] rtnArray = arr.Where(p => p != arr[index]).ToArray();
26 
27             return rtnArray;
28         }
View Code

从M个数取N个数

 1  static void FetchNumN(int[] arr, string rtnStr, int depth, int num)
 2         {
 3             if (depth == num)
 4             {
 5                 Console.WriteLine(rtnStr);
 6                 return;
 7             }
 8 
 9             int i = -1;
10             string tempStr = rtnStr;
11             int tempDepth = depth;
12 
13             while ((++i) < arr.Length)
14             {
15                 rtnStr = rtnStr + arr[i] + " ";
16                 depth++;
17 
18 
19                 int[] rtnArray = GetNextFetchArray(arr, i);
20                 FetchNumN(rtnArray, rtnStr, depth, num);
21 
22                 rtnStr = tempStr;
23                 depth = tempDepth;
24             }
25         }
26 
27         static int[] GetNextFetchArray(int[] arr, int index)
28         {
29             int[] rtnArray = new int[arr.Length - index - 1];
30             int j = -1;
31             for (int i = index + 1; i < arr.Length; i++)
32             {
33                 rtnArray[++j] = arr[i];
34             }
35 
36             return rtnArray;
37         }
View Code

调用方式

1  int[] array = new int[] { 1, 2, 3, 4, 5 };
2             AllSort(array, "");
3             FetchNumN(array, "", 0, 3);
View Code

 

转载于:https://www.cnblogs.com/dalas/archive/2013/05/30/3107670.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值