重排--是否存在每两个相邻元素的乘积都是4的倍数的排列
2017-09-09 23:41
239 查看
分析如下:
A 不是2的倍数,在两侧则需要一个4的倍数,在中间则需要两个4的倍数
B 是2的倍数不是4的倍数,可以随意连接,即任意个2的倍数不影响结果,考虑只有一个2的倍数的特殊情况
C 是4的倍数,无论放在哪里皆可
那么:
只需要 A 的个数小于等于C的个数那么就可以
特殊情况如下:只有一个B的时候,没有C,不能构成
只有 A 和 C , A的数目比C小1 , 也可以
以下代码未考虑特殊情况,需修正
#coding = utf-8
import sys
def countc(nn):
c0 = 0
c1 = 0
c2 = 0
for i in range(len(nn)):
t = int(nn[i])
if t % 4 == 0:
c2 += 1
continue
else:
if t % 2 == 0:
c1 += 1
continue
else:
c0 += 1
continue
return c0,c1,c2
if __name__ == "__main__":
n = int(raw_input().strip())
y = 'Yes'
no = 'No'
ans = []
for i in range(n):
c0 = 0
c1 = 0
c2 = 0
nn = n = int(raw_input().strip())
line = raw_input().strip().split()
c0,c1,c2 = countc(line)
if c0 <= c2:
ans.append(y)
else:
ans.append(no)
for i in ans:
print i
A 不是2的倍数,在两侧则需要一个4的倍数,在中间则需要两个4的倍数
B 是2的倍数不是4的倍数,可以随意连接,即任意个2的倍数不影响结果,考虑只有一个2的倍数的特殊情况
C 是4的倍数,无论放在哪里皆可
那么:
只需要 A 的个数小于等于C的个数那么就可以
特殊情况如下:只有一个B的时候,没有C,不能构成
只有 A 和 C , A的数目比C小1 , 也可以
以下代码未考虑特殊情况,需修正
#coding = utf-8
import sys
def countc(nn):
c0 = 0
c1 = 0
c2 = 0
for i in range(len(nn)):
t = int(nn[i])
if t % 4 == 0:
c2 += 1
continue
else:
if t % 2 == 0:
c1 += 1
continue
else:
c0 += 1
continue
return c0,c1,c2
if __name__ == "__main__":
n = int(raw_input().strip())
y = 'Yes'
no = 'No'
ans = []
for i in range(n):
c0 = 0
c1 = 0
c2 = 0
nn = n = int(raw_input().strip())
line = raw_input().strip().split()
c0,c1,c2 = countc(line)
if c0 <= c2:
ans.append(y)
else:
ans.append(no)
for i in ans:
print i
相关文章推荐
- 重排数列--是否存在排列,排列后数组的每两个相邻元素的乘积都是4的倍数
- 给定M*N矩阵,每一行、每一列都按升序排列,判断是否存在某个元素。
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 迅速找出数组a中是否存在相加后等于整数x的两个元素
- 算法入门---判断集合S中是否存在两个其和等于x的元素
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 两个数组判断某一元素是否存在
- 程序员面试题目总结--数组(四)【数列中符合条件数对的个数、数组是否存在重复元素、重新排列数组使数组左边为奇数,右边为偶数、数组中的第二大数、数组中的最小值和最大值】
- 判断集合S中是否存在两个其和等于x的元素
- 算法入门---判断集合S中是否存在两个其和等于x的元素
- 确定集合中是否存在两个其和刚好为X的元素?
- 这两个SQL语句都是查询数据库里头是否存在某个表的语句
- 给定N个整数集合是否存在两个其和刚好为指定常数的元素
- 用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过2
- 算法学习笔记----判断集合S中是否存在有两个其和等于x的元素
- php 求一个无序数组经过排列后任意两个相邻元素之差的最大值(算法)
- 集合S中是否存在两个元素使它们的和等于另外一个整数
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- Javascript比较两个数组是否相等(存在重复元素)
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】