Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <string>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>using namespace std;int N;string input;bool zero[26]; // 对应位置的字符是否可以为0:如果表示多位数字,则首个字符不能为0char pos[26]; // 表示在puzzle序列中依次出现的字母,其实是保存顺序int val[26]; // 每个字母的取值bool used[10]; // 该数字是否被使用vector<string> numbers; // 所有数字的string列表int leftnum; // 等式左边的数字个数int max_digits; // 数字的最大位数int charnum; // 使用的字母个数int sign[100]; // 每个数字前的符号,在左边则为正,右边为负bool useful[26]; // 标记每个字母是否是有用的,如果是无用的,则不枚举它的值vector<string> solutions; // 保存所有的结果// 初始化,并收集相关信息void init(string s){for (int i = 0; i<26; i++){zero[i] = true;pos[i] = '\0';val[i] = -1;useful[i] = false; // 默认所有都是无用的}