POJ2718 贪心算法
来源:互联网 发布:自己动手写网络爬虫 编辑:程序博客网 时间:2024/05/18 02:35
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class SmallestDifference {
static int[] dig;static int[] n1;static int[] n2;static int len;public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); sc = new Scanner(new File("src/file/smalldiff")); int T = sc.nextInt(); String tmpaaa = sc.nextLine(); for (int t = 0; t < T; t++) { String[] tmpread = sc.nextLine().split(" "); len = tmpread.length; dig = new int[len]; for (int i = 0; i < len; i++) { dig[i] = Integer.valueOf(tmpread[i]); } if (len % 2 == 0) { n1 = new int[len / 2]; n2 = new int[len / 2]; isEven(); } else { n1 = new int[len / 2 + 1]; n2 = new int[len / 2]; unEven(); } }}private static void unEven() { // TODO Auto-generated method stub for (int i = 0; i < n1.length; i++) { n1[i] = dig[i]; } for (int i = 0; i < n2.length; i++) { n2[i] = dig[len - i - 1]; } if (n1[0] == 0) { int tmp = n1[0]; n1[0] = n1[1]; n1[1] = tmp; } System.out.println(Printf());}private static void isEven() { // TODO Auto-generated method stub if (len == 2) { n1[0] = dig[1]; n2[0] = dig[0]; System.out.println(Printf()); } else if (len == 10) { System.out.println(247); } else { int min = 10; int count = 0; int seq[] = new int[len]; int tmpi; if (dig[0] == 0) tmpi = 2; else tmpi = 1; for (int i = tmpi; i < len; i++) { int di = dig[i] - dig[i - 1]; if (di < min) { min = di; seq[i] = min; count = 1; } else if (di == min) { seq[i] = min; count++; } } int mindif = 10; int ti = 10; for (int i = 1; i < len; i++) { if (seq[i] == min) { int tmpd = i > len / 2 ? i - len / 2 : len / 2 - i; if (tmpd < mindif) { mindif = tmpd; ti = i; } } } n1[0] = dig[ti]; n2[0] = dig[ti - 1]; int tii = 1; for (int i = 1; i < n1.length; i++) { if (i == ti) tii = -1; n1[i] = dig[i - tii]; } tii = 0; for (int i = 1; i < n2.length; i++) { if (len - i == ti) tii = 2; n2[i] = dig[len - i - tii]; } System.out.println(Printf()); }}private static int Printf() { // TODO Auto-generated method stub int tmpn1 = 0; int tmpn2 = 0; for (int i = 0; i < n1.length; i++) { tmpn1 = tmpn1 * 10 + n1[i]; } for (int i = 0; i < n2.length; i++) { tmpn2 = tmpn2 * 10 + n2[i]; } return tmpn1 - tmpn2;}
}
sample input:
8
1 2 3 4 5
0 1 2 3 4 5 6 7 8 9
0 3 6 9
0 1 2 3 4 5 7 9
1 3 5 7 8 9
1 2 3 4 6 8
0 2
1 2 3 5 7 9
sample output:
69
247
21
37
18
26
2
18
0 0
- POJ2718 贪心算法
- POJ2718 贪心算法(奇)+全排列剪枝(偶)
- POJ2718(枚举 + 贪心)
- poj2718 Smallest Difference【贪心】
- POJ2718 Smallest Difference 【贪心+枚举】
- POJ2718
- poj2718
- poj2718
- poj2718
- 枚举搜索+贪心:POJ2718--Smallest Difference(解一)
- poj2718 穷举
- 搜索 POJ2718
- POJ2718【DFS】
- package poj2718;
- package poj2718;
- POJ2718题解
- 【贪心】贪心算法总结
- 贪心算法
- OpenStack Heat AutoScaling
- node链接MongoDB
- laravel的搜索分页
- HBase客户端操作
- Binary Tree Paths(二叉树的路径)
- POJ2718 贪心算法
- Java中关于字段名字的修改
- ubuntu蓝牙音响配对成功但在声音设置中无法设置 解决
- dpi px dp计算公式
- 在O(n)时间内查找数组内第k小的数
- POJ1979 dfs
- oracle数据库_实例_用户_表空间之间的关系
- CCF 201612-4 交通规划(spfa)
- Error building Player: CommandInvokationFailure: Failed to re-package resources