HDU 1016 Prime Ring Problem
来源:互联网 发布:阿里云 腾讯云 华为云 编辑:程序博客网 时间:2024/04/26 22:01
给n个数,围成一个环,相邻两个数相加为质数
比较简单的回溯问题
类似皇后问题
算法本身没有什么好说的,很简单
需要注意的是:作为Java需要注意如果用System.out.println()输出必定会超时的
打个比方:
System.out.println()是接点水就倒了,比如接了1L水就倒了
PrintWriter要接满100L才倒
很明显第二种折腾的少一些,所以效率更高一些
具体机理其实我并不很清楚,但是可以从cout.flush()方法猜测,flush()方法是输出缓存内容
可以看到PrintWriter()构造方法传进去了一个OutputStreamWriter对象,输出流,应该是这个起到了关键作用
PrintWriter可能只是一个包装类
好吧。跑题太厉害了,算法为上,其它不必较真
import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.util.Scanner;public class Main {static int[] result;static boolean[] use;static int n;static boolean[] prime;static PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) {prime = new boolean[41];for (int i = 1; i < 41; i++) {prime[i] = isPrime(i, 0);}Scanner sc = new Scanner(System.in);int count = 0;while (sc.hasNext()) {count++;n = sc.nextInt();result = new int[n];use = new boolean[n];result[0] = 1;use[0] = true;cout.println("Case " + count + ":");find(1);cout.flush();// 依题意打印一句空行System.out.println();}}public static void find(int t) {if (t >= n) {printResult();} else if (t < n - 1) {for (int i = 0; i < n; i++) {if (!use[i]) {result[t] = i + 1;use[i] = true;if (prime[result[t] + result[t - 1]]) {find(t + 1);}use[i] = false;}}} else if (t == n - 1) {for (int i = 0; i < n; i++) {if (!use[i]) {result[t] = i + 1;use[i] = true;if (prime[result[t] + result[t - 1]]&& prime[result[t] + result[0]]) {find(t + 1);}use[i] = false;}}}}public static void printResult() {for (int i = 0; i < n; i++) {if (i != 0) {cout.print(" ");}cout.print(result[i]);}cout.println();}public static boolean isPrime(int a, int b) {int sum = a + b;for (int i = 2; i <= sum / 2; i++) {if (sum % i == 0) {return false;}}return true;}}
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU-1016 prime ring problem
- hdu 1016Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU-1016 Prime Ring Problem
- HDU-1016-Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- Hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- Hdu 1016 - Prime Ring Problem
- HDU 1016 Prime Ring Problem
- 《C语言参悟之旅》-读书笔记(八)
- thrift序列化和反序列化
- android里获取周围所有wifi ap 的信号强度的方法
- 《C语言参悟之旅》-读书笔记(九)
- nova-api 请求和回应
- HDU 1016 Prime Ring Problem
- android权限大全
- 【ActionScript】值类型与引用类型的区别(重要)
- PHP发邮件收件箱中主题乱码的解决方法
- MyBatis XML 映射配置文件
- 伙伴系统在Linux2.6.34版本中 初始化的函数调用关系
- wifi hotspot连接设备数限制
- Using Hadoop Distributed Cache
- tomcat中quartz被执行两次