主题: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;
}
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;
}