程序输入若干互不相同的数字,经过排列组合能产生多种不同的数值,那些是平方数

程序输入若干互不相同的数字,经过排列组合能产生多种不同的数值,求所有可能的值中,那些是平方数。

例:1,6,9

排列后,可产生3个平方数:

169

196

961


xaioxiao__
浏览 1349回答 2
2回答

JustWannaHugU

public class  Test {       public static void f(int[] a, int n) {           if (n == a.length - 1) {               int k = 0; // 把a里的数字组合为一个数字k               for(int i=0; i<a.length; i++) k = k*10 + a[i];              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, n+1);                             t = a[n];               a[n] = a[i];               a[i] = t;           }       }       public static void main(String[] args) {           int[] a = { 1, 9, 6 };           f(a, 0);       }   }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java