求一算法 等式还原,请进来看谢谢 题目等式还原 ABCDE DFG+ DFG----------- XYZDE每个字母代表一个数字(0-9)用什么样的算法求啊 我本来是用循环感觉太麻烦拉,请问大家应该是什么样的思路啊谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如 ABCDE DFG+ DFG----------- XYZDE这个式子的ABCDEFGXYZ都是0-9的其中一个数字,求出ABCDEFGXYZ各是多少这个式子就刚好成立例子A+B=C 那么A=1,B=2,C=3这就是成立的,上面这个只不过复杂一点。 需要观察从出现最多的字母开始循环 ABCDE DFG+ DFG----------- XYZDED出现了4次,F E G 等出现了2次,可以先从这里入手这样算法的复杂度会小很多 是用9个循环吗?我这样写的long[] aa=new long [10]; long a,b,c,d,e,f,g,x,y,z; System.Boolean w=true; for(d=1;d<=9;d++) for(f=0;f<=6;f++) { if((f*2)%10==0) { for(g=0;g<=6;g++) { if((2*g)%10==0) { for(e=0;e<=9;e++) for(a=1;a<9;a++) for(x=1;x<=9;x++) { if(x==a+1) { for(y=0;y<=1;y++) { if(y==1||y==0) { for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(z=0;z<=9;z++) { w=true; aa[0]=a;aa[1]=b;aa[2]=c;aa[3]=d;aa[4]=e; aa[5]=f;aa[6]=g;aa[7]=x;aa[8]=y;aa[9]=z; for(int m=0;m<10;m++) for(int n=0;n<10;n++) { if(aa[m]==aa[n]&&m!=n) w=false; }/////////////检查数字是否相同 if((a*10000+b*1000+c*100+d*10+e+d*100+f*10+g+d*100+f*10+g)==(x*10000+y*1000+z*100+d*10+e)&&w==true) { System.out.Println(" "+a+b+c+d+e+"\r\n "+d+f+g+"\r\n"+" +"+d+f+g+"\r\n"+"------"+"\r\n "+x+y+z+d+e); } else continue; } } else continue; } } else continue; } } else continue; } } else continue; } java字符串的一个疑问 list是否有值的判断问题,请大家帮忙看看。 出一道面试题:哪一个是false? 唉~JTabbedPane的问题,请老大们帮忙吧 JAVA中怎样使用JNI? 跪求Java高人指点(鼠标图形变换问题) 求教:简单程序问题! 题个关于java传真的问题? 国耻签名活动,请版主置顶!!!!!!!-----我的心真的很痛 文件读写的问题 简单源代码分析 (Eclipse版没人气,俺就在这问了)俺用Eclpise30,编译不了原来的tomcat项目,用2.0没这个问题!咋回事啊?
ABCDE
DFG
+ DFG
-----------
XYZDE这个式子的ABCDEFGXYZ都是0-9的其中一个数字,求出ABCDEFGXYZ各是多少这个式子就刚好成立
例子A+B=C 那么A=1,B=2,C=3这就是成立的,上面这个只不过复杂一点。
从出现最多的字母开始循环 ABCDE
DFG
+ DFG
-----------
XYZDED出现了4次,F E G 等出现了2次,可以先从这里入手这样算法的复杂度会小很多
我这样写的
long[] aa=new long [10];
long a,b,c,d,e,f,g,x,y,z;
System.Boolean w=true;
for(d=1;d<=9;d++)
for(f=0;f<=6;f++)
{
if((f*2)%10==0)
{
for(g=0;g<=6;g++)
{
if((2*g)%10==0)
{
for(e=0;e<=9;e++)
for(a=1;a<9;a++)
for(x=1;x<=9;x++)
{
if(x==a+1)
{
for(y=0;y<=1;y++)
{
if(y==1||y==0)
{
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(z=0;z<=9;z++)
{
w=true;
aa[0]=a;aa[1]=b;aa[2]=c;aa[3]=d;aa[4]=e;
aa[5]=f;aa[6]=g;aa[7]=x;aa[8]=y;aa[9]=z;
for(int m=0;m<10;m++)
for(int n=0;n<10;n++)
{
if(aa[m]==aa[n]&&m!=n)
w=false;
}/////////////检查数字是否相同
if((a*10000+b*1000+c*100+d*10+e+d*100+f*10+g+d*100+f*10+g)==(x*10000+y*1000+z*100+d*10+e)&&w==true)
{ System.out.Println(" "+a+b+c+d+e+"\r\n "+d+f+g+"\r\n"+" +"+d+f+g+"\r\n"+"------"+"\r\n "+x+y+z+d+e);
}
else
continue;
}
}
else
continue;
}
}
else
continue;
}
}
else
continue;
}
}
else
continue;
}