您的位置:首页 > 其它

穷举法解决组合问题

2013-12-23 11:39 309 查看
在下面的加法算式中,不同的符号代表不同的数字,相同的符号代表相同的数字。请设计程序求出"都、要、学、C"4个符号分别代表的数字。

[cpp] view
plaincopyprint?

              h 

          k   h 

      j   k   h 

+ i   j   k   h 

________________  

  2   0   0   8  

提示:让计算机解奥数题。穷举"都、要、学、C"4个符号分别代表的数字(从0到9),然后进行组合,如果组合起来符合规则(不同的符号代表不同的数字,相同的符号代表相同的数字,且使等式成立),则为正解。

未优化前的代码 

#include<iostream>
using namespace std;
int main()
{
int i,j,k,h;
for(i=0;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
for(h=0;h<=9;h++)
{
if(2008==(4*h+3*k*10+2*j*100+i*1000)&&0!=(i-j)*(j-k)*(k-h)*(h-i)&&i!=0)
{
cout<<"i="<<i<<" ";
cout<<"j="<<j<<" ";
cout<<"k="<<k<<" ";
cout<<"h="<<h<<endl;
}
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: