我是靠谱客的博主 慈祥蜜粉,这篇文章主要介绍Java实现完全平方数组,现在分享给大家,希望可以做个参考。

完全平方数组
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

具体题目如下图所示:

题目内容1
题目内容2

Java语言实现如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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实现完全平方数组内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(96)

评论列表共有 0 条评论

立即
投稿
返回
顶部