网易2018校招编程题集合2
来源:互联网 发布:泽宇网络传媒有限公司 编辑:程序博客网 时间:2024/06/06 19:43
如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列
输入描述:
输入包括两行,第一行包含整数n(2 ≤ n ≤ 50),即数列的长度。第二行n个元素x[i](0 ≤ x[i] ≤ 1000),即数列中的每个整数。
输出描述:
如果可以变成等差数列输出"Possible",否则输出"Impossible"。
思路:数组排序,相邻元素差值相等即可。
代码:
可以直接使用Arrays.sort()进行排序,这里使用快速排序,复习一下快排。import java.util.*; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int num = in.nextInt(); in.nextLine(); int[] a = new int[num]; for(int i=0;i<num;i++){ a[i] = in.nextInt(); } QuickSort(a,0,num-1); int cha = a[1]-a[0]; boolean b = true; for(int i=2;i<num;i++){ if(a[i]-a[i-1] != cha){ System.out.println("Impossible"); b = false; } } if(b) System.out.println("Possible"); } } public static void QuickSort(int[] a ,int start, int end){ int s = start; int e = end; if(start<end){ int num = a[start]; while(s<e){ while(s<e && a[e]>=num){ e--; } if(s<e){ a[s++] = a[e]; } while(s<e && a[s]<=num){ s++; } if(s<e){ a[e--] = a[s]; } } a[s] = num; QuickSort(a,start,s-1); QuickSort(a,s+1,end); } }}
阅读全文
0 0
- 网易2018校招编程题集合
- 网易2018校招编程题集合
- 网易2018校招编程题集合2
- 网易2018校招编程题集合1
- 网易2018校招编程题集合3
- 网易2018校招编程题集合3
- 网易2018校招编程题集合4
- 网易2018校招编程题集合5
- 网易2018校招编程题集合6
- 网易2018校招编程题集合7
- 网易2018校招编程题集合8
- 网易2018校招编程题集合4
- 网易2017秋招编程题集合
- 网易2017秋招编程题集合
- 网易2017秋招编程题集合
- 网易2017秋招编程题集合
- 网易2017秋招编程题集合
- 网易2017秋招编程题集合
- LWIP学习记录之如何动态更改IP地址
- js中求数组的最大值与最小值
- 日记8/5
- Vases and Flowers HDU
- (自然语言处理)语料清单
- 网易2018校招编程题集合2
- bzoj 1485 [HNOI2009]有趣的数列 卡特兰数
- 【金陵】周总结
- CodeChef AUG17 简要题解
- 2.常用控件:ProgressBar
- android进程启动流程
- 4.在master机器上配置环境变量
- OffsetLeft、offsetTop、offsetWidth、offsetHeight和clientWidth、clientHeight、clientLeft、clientTop的区别:
- LeetCode 371. Sum of Two Integers