注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字。
代码:
package 历届国赛; import java.io.*; import java.util.HashSet; public class 猜灯谜 { static boolean vis[] = new boolean[10]; static void dfs(String s,int d){ if(d>2){ HashSet<Character>h = new HashSet(); int n = Integer.parseInt(s),m = n*n; String ms = String.valueOf(m); for(int j=0;j<ms.length();j++){ h.add(ms.charAt(j)); } if(ms.length() == 6 && ms.charAt(0) == s.charAt(0) && ms.charAt(5) == s.charAt(1) && ms.charAt(1) == ms.charAt(4) && ms.charAt(2) != ms.charAt(3) && h.size() == ms.length()-1){ System.out.println(s); } return; } for(int i=0;i<=9;i++){ if(!vis[i]){ vis[i] = true; d++; dfs(s+i+"",d); d--; vis[i] = false; } } } public static void main(String[] args) { // TODO Auto-generated method stub for(int i=0;i<=9;i++){ vis[i] = false; } dfs("",0); } } 结果:897