本题思路是深搜枚举各种情况,用“剪枝的方法”一一排除。
#include <cstdio>
#include <stdlib.h>
#define maxn 30
int n,flag[maxn],used[maxn]={
0},first=1;//flag用来记录字母代表的数字,used记录数字是否用过
char s[4][maxn];//保存算式
int id(char ch)
{
return ch-'A'+1;
}//将算式中的字母转化为数字
void dfs(int x,int y,int t)
{
if(x==0)//由于算式是从右往左枚举,x=0表示完成
{
if(t==0)//进位为0
{
for(int i=1;i<=n;i++)
{
if(first) first=0;
else printf(" ");
printf(