c编程题求解

来源:百度知道 编辑:UC知道 时间:2024/09/22 04:00:35
给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。

———————

X Y Z D E

这个嘛。。
其实可以归约成一个求解线性方程组的问题来求解(或者准确来说肯定可以归约成线性规划)。。
看你的需要吧,根据各位数的关系可以列出来一系列的方程组,这样去计算就没有问题了。

建议你也不用想太多,其实枚举所有排列来测试这样写个程序就可以试出来,效率也不会低到哪里去:只是 10!尚可接受。。

算了,还是帮你写一个吧。。

楼主加点分吧,我写得好辛苦。。

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
char C[] = "ABCDEFGXYZ";
// ------- A, B, C, D, E, F, G, X, Y, Z
int P[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// 生成所有排列
do {
// ABCDE
int x = P[0] * 10000 +
P[1] * 1000 +
P[2] * 100 +
P[3] * 10 +
P[4];
int y = P[3] * 100 +
P[5] * 10 +
P[6];
int z = P[7] * 10000 +
P[8] * 1000 +
P[9] * 100 +
P[3] * 10 +
P[4];
if(z == x + y + y)