我是靠谱客的博主 慈祥蜜粉,最近开发中收集的这篇文章主要介绍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语言实现如下:

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实现完全平方数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部