排列平方数

/*
题目:排列平方数
内容:

若干不同的数字,排列组合后能产生多少个平方数?
下面的代码解决了这个问题。
对于:1,6,9
排列后,可产生3个平方数:
169
196
961

请阅读下面的代码,填写缺失的部分(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应

题号的“解答.txt”中即可。
直接写在题面中不能得分。


public class My
{
public static void f(int[] a, int n)
{
if(n==a.length-1)
{
int k = 0;
for(int i=0; i<a.length; i++) k = ____________ + a[i]; // 填空1
int m = (int)(Math.sqrt(k)+0.5);
if(m*m==k)
{
System.out.println(k);
}
return;
}

for(int i=n; i<a.length; i++)
{
int t = a[n];
a[n] = a[i];
a[i] = t;

f(a, _______________); // 填空2

t = a[n];
a[n] = a[i];
a[i] = t;
}
}

public static void main(String[] args)
{
int[] a = {1,9,6};
f(a, 0);
}
}
*/

 1     public class pro15
 2     {
 3         public static void f(int[] a, int n)
 4         {
 5             if(n==a.length-1)
 6             {
 7                 int k = 0;
 8                 for(int i=0; i<a.length; i++) k = k*10 + a[i];   // 填空1
 9                 int m = (int)(Math.sqrt(k)+0.5);
10                 if(m*m==k)
11                 {
12                     System.out.println(k);
13                 }
14                 return;
15             }
16             
17             for(int i=n; i<a.length; i++)//这个递归应该是遍历了几个数的全排列,但真的没有理解,
18             {
19                 int t = a[n];//这里做了一个交换,如果把初始值[1,9,6]带进去的话,就是a[0]与a[0]交换,
20                 a[n] = a[i];
21                 a[i] = t;
22                 
23                 f(a, n+1);        // 填空2
24                 
25                 t = a[n];
26                 a[n] = a[i];
27                 a[i] = t;
28             }
29         }
30         
31         public static void main(String[] args)
32         {
33             int[] a = {1,9,6};        
34             f(a, 0);
35         }
36     }

 


/*
  递归,真没理解清楚,
*/

posted on 2013-05-03 15:05  wsxjbcy  阅读(182)  评论(0编辑  收藏  举报

导航