ArrayList x = new ArrayList();
ArrayList y = new ArrayList();
x.Add("a");
x.Add("b");
x.Add("c");
x.Add("d");
...         
y.Add("1");
y.Add("2");
...
两动态数组   X  和Y   数组内元素个数不定,有可能B大于A的个数  求一算法,用数组B的所有元素依次和A
组合如  x[0]+y[0]  , x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2]  如果X里的个数正好是Y个数的整数倍,就组合倍数次,如果非整数倍,剩余元素都和Y[0]组合。    

解决方案 »

  1.   

    int yF=y.Count;
    for(int iCount=0;iCount<x.Count;i++)
    {
     x[iCount]+=y[icount%yF];
    }
      

  2.   

                ArrayList x = new ArrayList();
                ArrayList y = new ArrayList();
                ArrayList z = new ArrayList();            if (y.Count == 0) throw (new Exception("Null Y!"));
                int cnt = (x.Count % y.Count == 0) ? x.Count : (x.Count / y.Count * y.Count);            for (int i = 0; i < cnt; i++)
                {
                    z.Add(x[i] + y[i % y.Count]);
                }            for (int j = cnt; j < x.Count; j++)
                {
                    z.Add(x[j] + y[0]);
                }
      

  3.   

    int isint = x.length / y.length ;
    int xalen = isint * y.lenth;
    for(int i = 0;i < xalen; i++)
    {
    x[i] = x[i] + y[i % y.length];
    }
    for(int i = xalen; i< x.length;i++)
    {
    x[i] = x[i] + y[0];
    }
      

  4.   

    听起来好像并不是很复杂,但是你的:"就组合倍数次"是怎么组合呢?看你的实例:
    x[0]+y[0],x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2]
    ------------------------------------------------------------
    没看出什么规律,你把规律说一下好吗?
      

  5.   

    听起来好像并不是很复杂,但是你的:"就组合倍数次"是怎么组合呢?看你的实例: 
    x[0]+y[0],x[1]+y[1],x[2]+y[2],x[3]+y[0],x[4]+y[1],x[5]+y[2] 
    ------------------------------------------------------------ 
    没看出什么规律,你把规律说一下好吗?
     
    用数组X的所有元素依次和Y组合  
      

  6.   

    如果X里的个数正好是Y个数的整数倍,就组合倍数次,是倍数次还是X里的个数乘以倍数次?
      

  7.   

    用队列 [STAThread]
    static void Main(string[] args)
    {
    ArrayList X = new ArrayList();
    for( int i=0;i<5;i++)
    {
    X.Add(i);
    }
    ArrayList Y = new ArrayList();
    for( int i=10;i<19;i++)
    {
    Y.Add(i);
    }
    Compages(X,Y);
    Console.ReadLine();
    }
    private static void Compages(ICollection X, ICollection Y)
    {
    if(X.Count==0 || Y.Count==0)
    return;
    Queue QX = new Queue(X);
    Queue QY = new Queue(Y);
    int CountX = QX.Count;
    int CountY = QY.Count;
    int Count  = CountX > CountY ?CountX:CountY;

    for(int Index=0;Index<Count;Index++)
    {
    object x = QX.Dequeue();
    object y = QY.Dequeue();
    Console.WriteLine( "X={0} , Y={1}" ,x,y);
    QX.Enqueue(x);
    QY.Enqueue(y);
    }
    }
      

  8.   

    谢谢各位,问题己解决,. 大家提的算法我都测试了一下,其中大哥雁 godi   的算法比较接近.