`

2010.06.06 A题

F# 
阅读更多

题目:把自然数1到20连成一个环,使得环中每两个数的和为素数

 

package mlkimg.one;

import java.util.ArrayList;

public class PrimeRound {


	public static void main(String[] args) {
		PrimeRound pr = new PrimeRound();
		pr.primeRing(5);
	}

	public void primeRing(int n) {
		int[] in = new int[n];
		for (int i = 0; i < n; i++) {
			in[i] = i + 1;
		}
		boolean[] used = new boolean[n];//判断是否用过自然数
		ArrayList out = new ArrayList<Integer>();//存放满足条件自然    数的数组
		used[0] = true;
		out.add(1);//把1作为环中的第一个数

		makeRing(in, used, out, n);
	}

	public void makeRing(int[] in, boolean[] used, ArrayList out, int n) {
		int size = out.size();

		if (size == n) {
			if(isPrime((Integer)out.get(n-1)+1)){
			String s = out.toString();
			System.out.println(s);
			return;
			}
		}

		for (int i = 1; i < n; ++i) {

			int last = (Integer) out.get(size - 1);
			boolean isprime = isPrime(last + in[i]);
			if (used[i] || !isprime)
				continue;//判断自然数的是否满足条件

			out.add(in[i]);
			used[i] = true;

			makeRing(in, used, out, n);//递归调用

			used[i] = false;
			out.remove(size);//回溯
		}
	}

	public boolean isPrime(int n) {
		boolean s = true;
		if (n == 1)
			s = false;
		else if (n < 4)
			return s;
		else if (n % 2 == 0)
			s = false;
		else if (n < 9)
			return s;
		else if (n % 3 == 0)
			s = false;
		else {
			double r = Math.floor(Math.sqrt(n));
			int f = 5;
			while (f <= r) {
				if (n % f == 0 || n % (f + 2) == 0)
					s = false;
				f += 6;
			}
		}
		return s;

	}

}

 分析:这题的关键在于回溯,建立一个解空间为20的树,运用回溯找出所有的满足条件的解。(说了等于没说,呵呵)

ps:这题磨了我大半天,看来递归回溯这类问题真的很杀人脑细胞,现在在想如果是迭代的话代码会有多长呢?

这题貌似可以用les vegas法

分享到:
评论

相关推荐

    税务管理习题.docx

    29.06万元,3万元:正确计算结果。 - B. 51万元,0万元:计算错误。 - C. 43.59万元,0万元:计算错误。 - D. 34万元,3万元:计算错误。 **答案:** A. 29.06万元,3万元。设备及材料价款200万元应按17%的税率...

    《程序设计语言C》试卷A_2011.06借鉴.pdf

    根据提供的文件信息,我们可以从这份2010-2011学年第二学期的《程序设计语言C》试卷A卷中提炼出一系列与C语言相关的知识点。下面将对题目中涉及的重要知识点进行详细的解析: ### 1. 常量的表示方法 题目中的第一个...

    数据分析复习题.doc

    8. 自定义工具栏:在Excel2010中,可以通过“文件”&gt;“选项”&gt;“自定义功能区”来定制工具栏。 9. 工作簿默认扩展名:Excel2003的工作簿文件扩展名为.xls。 10. 输入日期格式:正确的日期格式是年/月/日,例如2016...

    北京林业大学高等数学A第一学期考试试卷.zip

    “2009-2010高等数学B(上)试卷A答案.doc”则提供了2009至2010学年上学期高等数学B试卷A的答案,有助于学生对照检查自己的解题过程。 最后,“shiti.doc”很可能是一份关于试题结构或考试说明的文档,它可能包含了...

    2010年会计从业资格考试会计基础预测题目06.doc

    选项A正确,反映了总分类账的详细性。 7. 汇总记账凭证的编制:汇总记账凭证是根据记账凭证编制的,用于简化总账登记。选项A正确。 8. 最基本的账务处理程序:记账凭证账务处理程序是最基础的,直接根据记账凭证...

    云南2020年上学期保山市第九中学高一地理阶段性测试试题.doc

    20. **地貌类型**:图A-05所示地貌可能是三角洲,图A-06所示地貌可能是冲积扇,主要由河流携带的泥沙堆积形成。 21. **地貌成因**:图A-06所示地貌,其形成原因主要是流水沉积,发生在河流出山口处。 以上是针对...

    标准财务上机练习题-总账报表.doc.docx

    - Administ rato rs (系统管理员组): 拥有全部权限 - Users (普通用户组): - 张华: 不设密码 - 李萍: 不设密码 #### 二、账套初始化 **2.1 会计科目引入与设置** - **引入会计科目**: - 选择《新会计准则...

    东财20秋《利息理论》综合作业-2答卷.docx

    - 第二年末的累计值为\(100 \times (1 + 3\%) + 102 \times (1 + 3\%) = 207.06\)元; - 第三年末的累计值为\(100 \times (1 + 4\%) + 207.06 \times (1 + 4\%) = 315.2224\)元。 - **答案**: \(315.2224\)元,...

    计算机二级C语言笔试复习资料1.pdf

    字符数据与ASCII码关联,如'0'对应的ASCII值是48,'a'是97,'A'是65。字符数据可以进行算术运算,例如'0'-0等于48。 整型数据通常占用两个字节,字符型占用一个字节,双精度浮点型通常占用4个字节。在不同位数的...

    吉林大学计算机数据库应用技术试题09年-10年

    **解析**: 这份试题针对的是吉林大学计算机学院06级和07级学生的《数据库应用技术》课程,考试时间为2009-2010学年的第一学期期末,具体日期为2009年1月12日。试题内容涵盖了数据库的基础概念、SQL语言的应用、并发...

    2006-2011年专转本语文真题及答案

    A选项中提到的《史记》确实是由司马迁编写的,《资治通鉴》则是司马光所著,但是《史记》记载的历史并非到西汉末年,而是至汉武帝太初四年(公元前93年)。故正确答案为A选项。 **5. 诗词作者及风格** - **选项...

    经典的JAVA编程题全集(52题及答案)

    - **标题**:利用条件运算符的嵌套来完成此题:学习成绩&gt;=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 - **描述**:根据给定的成绩范围,使用条件运算符来决定学生的成绩等级。 **代码解析**: ...

    中山大学数学分析试卷

    - **题目**:设 $A = A^T - ww^T$ 为 $n$ 阶实方阵,这里的 $A^T$ 表示单位矩阵 $w \in R^n$ 且 $||w||_2 = 1$。证明: - $A$ 是实对称的正交矩阵; - $A$ 仅有两个互不相同的特征值 $-1$ 和 $1$,其中 $1$ 是 $n-...

    09+10年计算机考研真题及答案

    16. **相对寻址转移指令**:第十六题是关于转移指令的计算,目标地址是当前指令地址加上位移量,考虑指令长度,实际位移量是06H*256+1=161,转换成16位地址为2001H,但由于地址是从2000H开始,所以目标地址是2002H-1...

    OFFICE 2010 中等偏上难度试题(期末考试范围)

    在 Office 2010 的期末考试中,试题主要涵盖了 Excel 的高级操作,包括格式设置、数据有效性、冻结行列、分类汇总、图表制作、数据透视表以及公式和函数的应用。以下是对这些知识点的详细说明: 1. **格式设置**: ...

    论文格式 (各种论文)

    北京:清华大学出版社,2010. - [2]Smith, John. Get Real: A Philosophical Adventure in Virtual Reality [M]. New York/London: Rowman & Littlefield, 1998. 2. **期刊文章参考文献示例**: - [3]李四.《互联网...

    数学建模历年试题解题方法总结

    - **94A 逢山开路**:涉及到的图论可以用来规划路线或构建网络模型,插值方法用于估计未知点的值,动态规划则是一种高效求解最优路径的方法。 - **94B 锁具装箱问题**:通过图论和组合数学的结合,可以有效地解决...

    山东大学软件学院高级程序设计语言java期末

    - "2013-A.doc"和"java试卷(06-07)-dahogn.doc"分别代表2013年A组试卷和2006至2007年的试卷,提供了更多历史参考。 - "2019高程第五页.doc"到"2019高程第四页.doc"可能是一份完整的2019年高级程序设计课程的试卷,...

    2009--2014年计算机组成原理考研真题与解析

    如果转移指令地址为2000H,位移量为06H,PC自动加1,那么目标地址为2001H + 06H = 2007H。 7. **RISC(精简指令集计算机)特点**: RISC的特点包括:简单指令集、大多数指令在一个时钟周期内完成、更多的通用...

    【备战2013】高考数学 6年高考母题精解精析 专题03 导数与函数06 文

    这些题目均来自于2010年各地高考数学文科试卷,主要涉及的是导数与函数相关的知识点,包括利用导数求函数的单调区间、极值、切线方程、最值问题以及函数的性质等。以下是这些知识点的详细解析: 1. **导数的运算**...

Global site tag (gtag.js) - Google Analytics