标题:猜灯谜
A 村的元宵节灯会上有一迷题:
请猜谜 * 请猜谜 = 请边赏灯边猜
小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。
请你用计算机按小明的思路算一下,然后提交“请猜谜”三个字所代表的整数即可。
请严格按照格式,通过浏览器提交答案。
注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字。
答案:897
这题我想的大概两种方法:
#include<bits/stdc++.h>
using namespace std;
int res[6];//分别表示请,猜,迷,边,赏,灯
//请猜谜*请猜谜 = 请边赏灯边猜
void dfs(int k)//搜索到了第k层
{
int j;
if(k == 7 && (res[0]*100+res[1]*10+res[2])*(res[0]*100+res[1]*10+res[2]) ==
(res[0]*100000+res[3]*10000+res[4]*1000+res[5]*100+res[3]*10+res[1]))
{
for(int i = 0;i < 6;i++)
cout<<res[i];
cout<<endl;
return;
}
for(int i = 0;i < 10;i++)//i表示可取的列,也就是可取的值
{
for(j = 0;j < k;j++)//j表示第k行之前的数取值
{
if(i==res[j])
break;
}
if(k == j)
{
res[j] = i;
if(res[0] == 0)
continue;
dfs(k+1);
}
}
}
int main()
{
dfs(0);
return 0;
}