求一数组中某一范围内所有组合(不重复)C#
2009-11-06 23:28
267 查看
/******************************************************************
* *函数名:issame
* *功 能:判断数组是否在另一个二维数组
* *输 入:int[,] sArray, int m, int[] dArray, int n
* *返 回:bool
* *创建人:smallmuou
* *日 期:2009-10-31
*******************************************************************/
private bool issame(int[,] sArray, int m, int[] dArray, int n)
{
bool result = false;
int i, j, k;
for (i = 0; i < m; i++)
{
k = 0;
for (j = 0; j < n; j++)
{
if (sArray[i, j] == dArray[j])
k++;
}
if (k == n)
{
result = true;
break;
}
}
return result;
}
/*****************************************************************************
* *函数名:resort
* *功 能:求所有组合
* *输 入:int[] sArray,int arrayMax, int m, int[] dArray, int n, int sum, int max, int min,int MAX,int MIN
* *返 回:void
* *创建人:smallmuou
* *日 期:2009-10-31
******************************************************************************/
private void resort(int[] sArray,int arrayMax, int m, int[] dArray, int n, int sum, int max, int min,int MAX,int MIN)
{
int k;
if (m <arrayMax)
{
sum += sArray[m];
if (sum <= MAX && sum >= MIN)
{
dArray
= sArray[m];
for (k = n + 1; k < dArrayMax; k++)
dArray[k] = 0;
if (issame(totleArray, totleArrayMax, dArray, dArrayMax))
{
}
else
{
for (k = 0; k < dArrayMax; k++)
totleArray[totleCount, k] = dArray[k];
totleCount++;
}
resort(sArray,arrayMax, m + 1, dArray, n + 1, sum, max - sArray[m], min - sArray[m],MAX,MIN);
}
else if (sum < MIN)
{
dArray
= sArray[m];
for (k = n + 1; k < dArrayMax; k++)
dArray[k] = 0;
resort(sArray,arrayMax, m + 1, dArray, n + 1,sum, max - sArray[m], min - sArray[m],MAX,MIN);
}
else
{
for (k = m + 1; k < arrayMax; k++)
{
if (sArray[m] == sArray[k])
m++;
else
break;
}
}
sum -= sArray[m];
resort(sArray,arrayMax, m + 1, dArray, n,sum, max, min,MAX,MIN);
}
}
* *函数名:issame
* *功 能:判断数组是否在另一个二维数组
* *输 入:int[,] sArray, int m, int[] dArray, int n
* *返 回:bool
* *创建人:smallmuou
* *日 期:2009-10-31
*******************************************************************/
private bool issame(int[,] sArray, int m, int[] dArray, int n)
{
bool result = false;
int i, j, k;
for (i = 0; i < m; i++)
{
k = 0;
for (j = 0; j < n; j++)
{
if (sArray[i, j] == dArray[j])
k++;
}
if (k == n)
{
result = true;
break;
}
}
return result;
}
/*****************************************************************************
* *函数名:resort
* *功 能:求所有组合
* *输 入:int[] sArray,int arrayMax, int m, int[] dArray, int n, int sum, int max, int min,int MAX,int MIN
* *返 回:void
* *创建人:smallmuou
* *日 期:2009-10-31
******************************************************************************/
private void resort(int[] sArray,int arrayMax, int m, int[] dArray, int n, int sum, int max, int min,int MAX,int MIN)
{
int k;
if (m <arrayMax)
{
sum += sArray[m];
if (sum <= MAX && sum >= MIN)
{
dArray
= sArray[m];
for (k = n + 1; k < dArrayMax; k++)
dArray[k] = 0;
if (issame(totleArray, totleArrayMax, dArray, dArrayMax))
{
}
else
{
for (k = 0; k < dArrayMax; k++)
totleArray[totleCount, k] = dArray[k];
totleCount++;
}
resort(sArray,arrayMax, m + 1, dArray, n + 1, sum, max - sArray[m], min - sArray[m],MAX,MIN);
}
else if (sum < MIN)
{
dArray
= sArray[m];
for (k = n + 1; k < dArrayMax; k++)
dArray[k] = 0;
resort(sArray,arrayMax, m + 1, dArray, n + 1,sum, max - sArray[m], min - sArray[m],MAX,MIN);
}
else
{
for (k = m + 1; k < arrayMax; k++)
{
if (sArray[m] == sArray[k])
m++;
else
break;
}
}
sum -= sArray[m];
resort(sArray,arrayMax, m + 1, dArray, n,sum, max, min,MAX,MIN);
}
}
相关文章推荐
- 在一个长度为n的数组里的所有数字都在1到n-1的范围内。 有一个数字重复若干次,找出这个数字。
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- http://www.dewen.net.cn/q/15749/PHP求数组值相加(可重复)等于某值的所有组合
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- C#实现生成所有不重复的组合功能示例
- 打印出大小为n的数组(可能有重复元素)里所有可能的组合
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- 实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
- C# 获取某一范围内的不重复随机数
- 找出一个字符数组(元素不重复)所有可能字符的组合
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如: 原始字符串是"abc",打印得到下列所有组合情况
- for循环的小练习之6个不重复数字的所有组合输出
- 一个记录集,如何得到该记录集中某一字段所有是重复记录的记录集
- sql根据某一字段查询不重复记录,同时要查询出所有满足条件的字段信息
- 算法随机在一定范围内(min-max)选出m个不重复的数据放到一个数组中
- 给定一个没有重复的已排序整数数组,返回其范围的摘要。
- 从数组中取出n个元素的所有组合(递归实现)