我的思路:先确定第一个数,将第一个数乘二,排除不合规则的得到第二个数,再将第一个数乘三排除不合规则的得到第三个数。
最初的代码:
package 三连击;
public class test {
public static void main(String arg[])
{
int a,b,c,d,e,f,g,h,i;
int l,m;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++) {
for(c=1;c<=9;c++) {
if((a!=b)&&(a!=c)&&(b!=c)&&(a*100+b*10+c<334)) {
l=(a*100+b*10+c)*2;
d=l/100;
e=(l%100)/10;
f=l%10;
if((d!=a)&&(d!=b)&&(d!=c)&&(e!=a)&&(e!=b)&&(e!=c)&&(f!=a)&&(f!=b)&&(f!=c)&&(d!=e)&&(d!=f)&&(e!=f)) {
m=(a*100+b*10+c)*3;
g=m/100;
h=(m%100)/10;
i=m%10;
if((g!=a)&&(g!=b)&&(g!=c)&&(g!=d)&&(g!=e)&&(g!=f)&&(h!=a)&&(h!=b)&&(h!=c)&&(h!=d)&&(h!=e)&&(h!=f)&&(i!=a)&&(i!=b)&&(i!=c)&&(i!=d)&&(i!=e)&&(i!=f)&&(g!=h)&&(h!=i)&&(g!=i)) {
System.out.print(a*100+b*10+c+" ");
System.out.print(l+" ");
System.out.print(m);
System.out.println();
}
}
}
}
}
}
}
}
运行结果如下
192 384 576
219 438 657
267 534 801
273 546 819
327 654 981
但提交通不过,找了半天错发现是因为题目要求数字1-9,第三组答案有0,修改代码如下:
package 三连击;
public class test {
public static void main(String arg[])
{
int a,b,c,d,e,f,g,h,i;
int l,m;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++) {
for(c=1;c<=9;c++) {
if((a!=b)&&(a!=c)&&(b!=c)&&(a*100+b*10+c<334)) {
l=(a*100+b*10+c)*2;
d=l/100;
e=(l%100)/10;
f=l%10;
if((d!=a)&&(d!=b)&&(d!=c)&&(e!=a)&&(e!=b)&&(e!=c)&&(f!=a)&&(f!=b)&&(f!=c)&&(d!=e)&&(d!=f)&&(e!=f)) {
m=(a*100+b*10+c)*3;
g=m/100;
h=(m%100)/10;
i=m%10;
if((g!=a)&&(g!=b)&&(g!=c)&&(g!=d)&&(g!=e)&&(g!=f)&&(h!=a)&&(h!=b)&&(h!=c)&&(h!=d)&&(h!=e)&&(h!=f)&&(i!=a)&&(i!=b)&&(i!=c)&&(i!=d)&&(i!=e)&&(i!=f)&&(g!=h)&&(h!=i)&&(g!=i)) {
if((a!=0)&&(b!=0)&&(c!=0)&&(d!=0)&&(e!=0)&&(f!=0)&&(g!=0)&&(h!=0)&&(i!=0)) {/*加了不为零的条件*/
System.out.print(a*100+b*10+c+" ");
System.out.print(l+" ");
System.out.print(m);
System.out.println();
}
}
}
}
}
}
}
}
}
通过。
还是审题考虑不周到的原因。