poj1011
来源:互联网 发布:拼豆豆图纸设计软件 编辑:程序博客网 时间:2024/05/17 22:38
package work;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main1011 {
static int len;
static int avg;
static int[] seq;
static boolean[] isV;
static int total;
public static void main(String[] args) throws FileNotFoundException {
// TODO
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
sc = new Scanner(new File("src/1011.txt"));
while (true) {
len = sc.nextInt();
if (len == 0)
break;
seq = new int[len];
total = 0;
for (int i = 0; i < len; i++) {
seq[i] = sc.nextInt();
total += seq[i];
}
if (len == 1) {
System.out.println(seq[0]);
} else if (len == 2) {
if (seq[0] == seq[1])
System.out.println(seq[0]);
else
System.out.println(seq[1]+seq[0]);
} else {
System.out.println(Splice());
}
}
}
private static int Splice() {
// TODO Auto-generated method stub
Qsort(0, len - 1, seq);
for (avg= seq[0]; avg< total; avg++) {
if (total % avg!= 0)
continue;
isV = new boolean[len];
if (dfs(0, 0, 0))
break;
}
return avg;
}
private static boolean dfs(int n, int p, int num) {
// TODO Auto-generated method stub
if (avg* num == total)
return true;
for (int i = p; i < len; i++) {
if (isV[i] || (i != 0 && !isV[i - 1] && seq[i] == seq[i - 1]))
continue;
if (n + seq[i] == avg) {
isV[i] = true;
if (dfs(0, 0, num + 1))
return true;
isV[i] = false;
//因已排好序,若当前完成枝不可用,则后方枝也不可用,
//再往后选也不过是之前选过的子集
//故直接返回false
return false;
} else if (n + seq[i] < avg) {
isV[i] = true;
if (dfs(n + seq[i], i + 1, num))
return true;
isV[i] = false;
//判断是否为当前可用最大枝,
//若是,证明该枝永远也不可匹配成功,
//故直接返回false
if (n == 0)
return false;
}
}
return false;
}
private static void Qsort(int l, int r, int[] ss) {
// TODO Auto-generated method stub
if (l < r) {
int key = ss[r];
int i = l;
int j = r;
while (i < j) {
while (i < j && ss[i] > key)
i++;
ss[j] = ss[i];
while (i < j && ss[j] <= key)
j--;
ss[i] = ss[j];
}
ss[j] = key;
Qsort(l, j - 1, ss);
Qsort(j + 1, r, ss);
}
}
}
、、input
9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
2
1 1
2
1 3
0
、、output
6
5
1
4
- POJ1011
- POJ1011
- poj1011
- poj1011
- POJ1011
- POJ1011
- poj1011
- poj1011
- poj1011
- POJ1011
- poj1011
- poj1011
- poj1011
- poj1011
- poj1011
- poj1011
- poj1011
- POJ1011
- javaweb+tomcat实现通过ip访问项目
- AJAX - Jquery.ajax()
- 百度地图开发--解决地图无法显示的问题
- Android-View的事件体系
- 连接Access数据库
- poj1011
- redhat定时执行任务(自动重启Tomcat)
- 切面优先级 Spring Aop
- OpenCV2中矩阵的归一化 normalize函数详解
- Fast convolutional neural network training using selective data sampling: Application to hemorrhage
- 徐汉彬:Web系统大规模并发——电商秒杀与抢购
- 居于H5的多文件、大文件、多线程上传解决方案
- PHP生成验证码时“图像因其本身有错无法显示”的解决方法
- 自定义View:仿GitHub的提交活跃表格