例:  1001  1002  1003  
     1002  1003  1004
     1008  1009  1010
     1012  1013  1018
     1023  1034  1405
            .
            .
            .
            . 
            .
            .组成的12位字符的数字中每列必须有一个数字出现也只能有一个数字出现

解决方案 »

  1.   

    结果如  100210091405等
        用.net算法或sql算法实现
      

  2.   

                Int64 s =NewValue(1001, 1002, 1003); 
     private Int64 NewValue(int v1, int v2, int v3)
            {
                return Convert.ToInt64(v1.ToString() + v2.ToString() + v3.ToString());
                //应为合计后数值太大所得用Int64 不过感觉不是很好最后还是用string
            }
      

  3.   


    我举的例子是个数组,好像可以用for或foreach   最后组成12个字符的数字有多少个   还有sql的算法怎么用
      

  4.   

    还有sql的算法怎么用?
    这样用sql应该不能实现吧,至少我实现不了。在一次确定你要的东西。
    比如1234
    就要转换成
    1243
    1324
    1342
    1432
    1423
    2134
    2143
    等东西吗
      

  5.   

    C# code             Int64 s =NewValue(1001, 1002, 1003); 
            private Int64 NewValue(int v1, int v2, int v3) 
            { 
                return Convert.ToInt64(v1.ToString() + v2.ToString() + v3.ToString()); 
                //应为合计后数值太大所得用Int64 不过感觉不是很好最后还是用string 
            } 
      

  6.   

    MessageBox.Show(NewValue(1111, 2222, 3333)); public string NewValue(int v1, int v2, int v3)
            {
                string[] strs = new string[3];
                strs[0] = v1.ToString();
                strs[1] = v2.ToString();
                strs[2] = v3.ToString();
                string value = "";
                for (int i = 0; i < strs.Length; i++)
                {
                    for (int j = 0; j < strs.Length; j++)
                    {
                        if (i != j)
                        {
                            int k = 0;
                            for (k = 0; k < strs.Length; k++)
                            {
                                if (k != i && k != j)
                                    break;
                            }
                            value += strs[i] + strs[j] + strs[k] + " ";
                        }
                    }
                }            return value;
            }
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace ConsoleApplication13
    {
        class Program
        {        static List<List<int>> Result = new List<List<int>>();
            static List<int> Current;        static void Main(string[] args)
            {
                List<int> A = new List<int>(new int[]
                {
                    1001  ,1002,  1003 ,
                    8888,  1003,  1004 ,
                });            DoIt(A, new List<int>(), 3);            for (int i = 0; i < Result.Count; i++)
                {
                    foreach (int j in Result[i])
                        Console.Write(j);
                    Console.Write(" ");
                    if ((i + 1) % 5 == 0)
                        Console.WriteLine();
                }
                Console.Read();
            }        static void DoIt(List<int> A, List<int> B, int Times)
            {
                if (Times == 0)
                {
                    Current = B;
                    if (!Result.Exists(IsExists))
                        Result.Add(new List<int>(B));
                    return;
                }            for (int i = 0; i < A.Count; i++)
                {
                    int Temp = A[i];
                    A.RemoveAt(i);
                    B.Add(Temp);
                    DoIt(A, B, Times - 1);
                    A.Insert(i, Temp);
                    B.Remove(Temp);
                }
            }        static bool IsExists(List<int> R)
            {
                foreach (int I in R)
                    if (!Current.Contains(I))
                        return false;
                return true;
            }
        }
    }
      

  8.   

     
    把18楼的稍微改成这样应该可以吧,听说还有sql算法的
    public string NewValue()
            {
                string[][] strs = new string[][]{{1001,1002,1003},{1002,1003,1004},{1003,1004,1005},{1004,1005,1006}};
                string value = "";
                for (int i = 0; i < strs.Length; i++)
                {
                    for (int j = 0; j < strs.Length; j++)
                    {
                        if (i != j)
                        {
                            int k = 0;
                            for (k = 0; k < strs.Length; k++)
                            {
                                if (k != i && k != j)
                                    break;
                            }
                            value += strs[i] + strs[j] + strs[k] + " ";
                        }
                    }
                }            return value;
            }