日期:2014-05-19  浏览次数:20695 次

求救:排列组合问题
有以下排列
          col1         col2     col3     col4
row1     1               2           3           4
row2     5               6           7           8
row3     9               10         11         12

现在要求出组合   和在10-20之间


1   5   9   是[row1,col1]   [row2,col1]   [row3,col1]的数字
那么1   +5+9=16在10-20直接符合要求   输出   111   就是col1   col1   col1

1   6   9   是[row1,col1]   [row2,col2]   [row3,col1]的数字
1+6+9=16   在10-20直接符合要求   输出121   就是col1   col2   col1




------解决方案--------------------
大概意思:

for(int i=1;i <=3;i++)
for(int j=1;j <=3;j++)
{
if(j==i||j==6-i-j||6-i-j==i)
continue;
int m=6-i-j;
if([1,i]+[2,j]+[3,m]> 10&&[1,i]+[2,j]+[3,m] <20)
Console.WriteLine(i.ToString()+j.ToString()+m.ToString());
}
------解决方案--------------------
做了一下,比较晕的,基本的实现了,后面的LZ自己改改吧:

using System;

namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int[,] nums = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
int sum = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
for (int k = 0; k < 3; k++)
for (int l = 0; l < 4; l++)
for (int m = 0; m < 3; m++)
for (int n = 0; n < 4; n++)
{
sum = nums[i, j] + nums[k, l] + nums[m, n];
if ((sum > 10 && sum < 20) && !((i == k && j == i)||(i == m && j == n) || (k == m && l == n)))
Console.WriteLine( "{0}+{1}+{2}的总和为sum = {3} ", nums[i, j],nums[k, l],nums[m, n],sum);
}
}
}
}