概述
完全平方数组
1.完全平方数:9等于3的平方,16等于4的平方,这些都是完全平方数。
2.完全平方数组:[3,6,10]相邻两个数的和是完全平方数的话,这就是完全平方数组。
3+6=9,6+10=16然后[3,6,10]把里面的数进行全排列有6种形式,例如[3,10,6],[10,6,3]等等。
这6中方式里面,只有[3,6,10]和[10,6,3]是完全平方数组。
题目要求:输入3 6 10输出结果要求是2
思路:把判断完全平方数组的函数和数组全排列的函数拼到一起,判断出每个数组是不是符合要求的,得到这个2
具体题目如下图所示:
Java语言实现如下:
import java.util.*;
public class NiBoLan {
static int a=0;
public static void main(String[] args) {
int[] array = {3,6,10};
//int[] array = {8,8,8};//没有考虑有效排列
allSort(array, 0, array.length - 1,0);//输出所有可能的数组
System.out.println("完全平方数组个数为:"+a);
}
static void allSort(int[] array,int begin,int end,int count) {
if (begin == end) {
System.out.print(Arrays.toString(array));
if (isSquares1(array) == 1) {//如果这个数组是要求的形式,count+1
a ++;
System.out.println("是否为完全平方数组:" +"是");
}else
{
System.out.println("是否为完全平方数组:" +"否");
}
}
for (int i = begin; i <= end; i++) {//后面的数依次和begin位置的值交换
swap(array, begin, i);
allSort(array, begin + 1, end,count);//递归
swap(array, begin, i);//下一次排列之前,先使数组回复原样
}
}
static void swap ( int[] array, int a, int b){
int tem = array[a];
array[a] = array[b];
array[b] = tem;
}
public static int isSquares1 ( int[] array ){//判断数组是不是完全平方数组,是的话返回1,不是返回0
int count1 = 0;
for (int i = 0; i < array.length - 1; i++) {
if (isSquares(array[i] + array[i + 1]) == 1) {
count1++;
} else {
break;
}
}
if (count1 == array.length - 1) {
return 1;
} else {
return 0;
}
}
public static int isSquares ( int value){//判断一个数是不是完全平方数,是的话返回1,不是的话返回0
if (value < 0) {
return 0;
}
double sqrtValue = Math.sqrt(value * 1.0);
int sqrtSimiValue = (int) sqrtValue;
if ((sqrtSimiValue * sqrtSimiValue) == value) {
return 1;
} else {
return 0;
}
}
}
最后
以上就是慈祥蜜粉为你收集整理的Java实现完全平方数组的全部内容,希望文章能够帮你解决Java实现完全平方数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复