回 帖 发 新 帖 刷新版面

主题:VC高手帮帮忙解释一下这么代码

题目:1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数
                        D F G     字对应不同字母。编程求出这些数字并
                   +    D F G     且打出这个数字的算术计算竖式。
                 ───────
                    X Y Z D E
代码也是在这上面找的,可是看了半天都没看懂,哪个高手来帮我解释一下,小弟我先谢了!
#include <iostream>
#include <algorithm>
using namespace std;

enum Table {A, B, C, D, E, X, Y, Z};

void Compute(int List[], int First, int Last)
{
    static bool bExit;
    
    if(bExit)
        return;

    if(First == Last)//作用是?
    {
        int Tmp = 1 + List[C] + 2 * List[D];
        if(Tmp % 10 != List[Z])
            return;
        Tmp = Tmp/10;
        if((List[B] + Tmp)%10 != List[Y])
            return;
        if(List[X] != List[A] + (List[B] + Tmp)/10)
            return;

        bExit = true;
        cout<<List[A]<<List[B]<<List[C]<<List[D]<<List[E]<<endl
            <<"  "<<List[D]<<5<<0<<endl
            <<"+ "<<List[D]<<5<<0<<endl
            <<"-----"<<endl
            <<List[X]<<List[Y]<<List[Z]<<List[D]<<List[E]<<endl;

    }
    else
        for(int i = First; i <= Last; i++)
        {
            std::swap(List[First], List[i]);
            Compute(List, First + 1, Last);

            if(bExit)
                return;

            std::swap(List[First], List[i]);
        }
}

int main()
{
    int List[8] = {1, 2, 3, 4, 6, 7, 8, 9};
    Compute(List, 0, 7);
    return 0;
}

回复列表 (共1个回复)

沙发

递归调用

我来回复

您尚未登录,请登录后再回复。点此登录或注册