重排数列--是否存在排列,排列后数组的每两个相邻元素的乘积都是4的倍数
2017-09-09 19:07
337 查看
i从0到n-1,是否存在排列,使得a[i]*a[i+1]的值都是4的倍数
import java.util.Scanner; public class Main { public static void main(String[] args) { int m, n; int[] arr; Scanner sc = new Scanner(System.in); m = sc.nextInt(); for (int i = 0; i < m; i++) { n = sc.nextInt(); arr = new int ; //记录能被4整除的个数,能被2整除的个数以及奇数的个数 int c4 = 0, c2 = 0, c1 = 0; for (int j = 0; j < n; j++) { arr[j] = Integer.parseInt(sc.next()); if (arr[j] % 4 == 0) c4++; else if (arr[j] % 2 == 0) c2++; else c1++; }//for j if (c4 >= n / 2 || c4 >= c1) {//要么4的倍数的元素个数大于等于数组长度的一半(下取整), //要么4的倍数的元素个数大于等于奇数元素的个数 System.out.println("yes"); } else System.out.println("no"); }//for i }//main } //4 //4组数 //4 //第一组4个元素 //3 3 4 4 //第一组的元素值 //yes //第一组的结果 //4 //第二组4个元素 //2 2 4 4 //yes //5 //1 3 5 4 12 //yes //4 //1 2 3 4 //no //比如:1 3 5 4 12 //存在排列:1 4 3 12 5,这样1*4,4*3,3*12,12*5均是4的倍数 //比如:1 2 3 4 //不存在该排列
相关文章推荐
- 重排--是否存在每两个相邻元素的乘积都是4的倍数的排列
- 程序员面试题目总结--数组(四)【数列中符合条件数对的个数、数组是否存在重复元素、重新排列数组使数组左边为奇数,右边为偶数、数组中的第二大数、数组中的最小值和最大值】
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位
- javascript 判断两个数组中是否存在相同元素
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的
- 两个数组判断某一元素是否存在
- Javascript比较两个数组是否相等(存在重复元素)
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的
- 二、 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位
- C语言之数组设数组a包括10个整型元素,用C语言编程序,求出数组a中相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
- php 求一个无序数组经过排列后任意两个相邻元素之差的最大值(算法)
- 迅速找出数组a中是否存在相加后等于整数x的两个元素
- 【C语言】比较两个数组中是否有相同的元素
- js中比较两个数组中是否含有相同的元素,可去重,可删除合并为新数组
- 算法入门---判断集合S中是否存在两个其和等于x的元素
- 查找——相邻元素差的绝对值都是1的数组当中的某个数的索引——多益网络2018校招编程1
- 判断两个数组是否有相同元素
- 如何高效的判断数组中是否存在至少两个相同的数值,存在返回true,不存在返回false
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)