如题

解决方案 »

  1.   

    VC 6.0默认编码是MBCS,而 VC.net是Unicode的
      

  2.   

    是一段比较复杂的代码啊
    应该是这一段有问题吧
    void AddSide(long *NT,long *BR,long *J1,long *J2,long NN,long NJ,long KF)
    {
    int i = 0,j = 0,k = 0;
            long flag1 = 0,JA = 0,JB = 0,JMAX = 0,JMIN = 0,L = 0,N = 0,NM = 0,*JC;
    JC = new long[NJ+1];
    NM = NN-NJ+1;
    for(i = 1;i<=NJ;i++)JC[i] = 0;
    L = 0;N = 0;
    for(i = NN;i>=KF+1;i--)
    {
    k = BR[i];
    NT[k] = 0;
    JA = J1[k];
    JB = J2[k];
    if(JC[JA] == JC[JB])
    {
    if(JC[JA] == 0)
    {
    L++;
    JC[JA] = L;
    JC[JB] = L;
    }
    else
    {
    NT[k] = 1;
    N++;
    }
    continue;
    }
    if(JC[JA]>JC[JB])
    {
    if(JC[JB] == 0)
    {
    JC[JB] = JC[JA];
    continue;
    }
    else flag1 = 1;
    }
    if(JC[JA]<JC[JB])
    {
    if(JC[JA] == 0)
    {
    JC[JA] = JC[JB];
    continue;
    }
    else flag1 = 1;
    }
    if(flag1)
    {
    if(JC[JA]>JC[JB])
    {
    JMAX = JC[JA];
    JMIN = JC[JB];
    }
    else
    {
    JMAX = JC[JB];
    JMIN = JC[JA];
    }
    for(j = 1;j<=NJ;j++)
    if(JC[j] == JMAX)
    JC[j] = JMIN;
    flag1 = 0;
    }
    }
    if(N+KF != NM)
    {
    cout<<"N="<<N<<"   KF="<<KF<<endl;
    exit(0);//退出程序
    }
    delete []JC;
    }
      

  3.   

    最后算出来的N值不一样,如:6。0是13而。NET是36