题目:把自然数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法
分享到:
相关推荐
29.06万元,3万元:正确计算结果。 - B. 51万元,0万元:计算错误。 - C. 43.59万元,0万元:计算错误。 - D. 34万元,3万元:计算错误。 **答案:** A. 29.06万元,3万元。设备及材料价款200万元应按17%的税率...
根据提供的文件信息,我们可以从这份2010-2011学年第二学期的《程序设计语言C》试卷A卷中提炼出一系列与C语言相关的知识点。下面将对题目中涉及的重要知识点进行详细的解析: ### 1. 常量的表示方法 题目中的第一个...
8. 自定义工具栏:在Excel2010中,可以通过“文件”>“选项”>“自定义功能区”来定制工具栏。 9. 工作簿默认扩展名:Excel2003的工作簿文件扩展名为.xls。 10. 输入日期格式:正确的日期格式是年/月/日,例如2016...
“2009-2010高等数学B(上)试卷A答案.doc”则提供了2009至2010学年上学期高等数学B试卷A的答案,有助于学生对照检查自己的解题过程。 最后,“shiti.doc”很可能是一份关于试题结构或考试说明的文档,它可能包含了...
选项A正确,反映了总分类账的详细性。 7. 汇总记账凭证的编制:汇总记账凭证是根据记账凭证编制的,用于简化总账登记。选项A正确。 8. 最基本的账务处理程序:记账凭证账务处理程序是最基础的,直接根据记账凭证...
20. **地貌类型**:图A-05所示地貌可能是三角洲,图A-06所示地貌可能是冲积扇,主要由河流携带的泥沙堆积形成。 21. **地貌成因**:图A-06所示地貌,其形成原因主要是流水沉积,发生在河流出山口处。 以上是针对...
- Administ rato rs (系统管理员组): 拥有全部权限 - Users (普通用户组): - 张华: 不设密码 - 李萍: 不设密码 #### 二、账套初始化 **2.1 会计科目引入与设置** - **引入会计科目**: - 选择《新会计准则...
- 第二年末的累计值为\(100 \times (1 + 3\%) + 102 \times (1 + 3\%) = 207.06\)元; - 第三年末的累计值为\(100 \times (1 + 4\%) + 207.06 \times (1 + 4\%) = 315.2224\)元。 - **答案**: \(315.2224\)元,...
字符数据与ASCII码关联,如'0'对应的ASCII值是48,'a'是97,'A'是65。字符数据可以进行算术运算,例如'0'-0等于48。 整型数据通常占用两个字节,字符型占用一个字节,双精度浮点型通常占用4个字节。在不同位数的...
**解析**: 这份试题针对的是吉林大学计算机学院06级和07级学生的《数据库应用技术》课程,考试时间为2009-2010学年的第一学期期末,具体日期为2009年1月12日。试题内容涵盖了数据库的基础概念、SQL语言的应用、并发...
A选项中提到的《史记》确实是由司马迁编写的,《资治通鉴》则是司马光所著,但是《史记》记载的历史并非到西汉末年,而是至汉武帝太初四年(公元前93年)。故正确答案为A选项。 **5. 诗词作者及风格** - **选项...
- **标题**:利用条件运算符的嵌套来完成此题:学习成绩>=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-...
16. **相对寻址转移指令**:第十六题是关于转移指令的计算,目标地址是当前指令地址加上位移量,考虑指令长度,实际位移量是06H*256+1=161,转换成16位地址为2001H,但由于地址是从2000H开始,所以目标地址是2002H-1...
在 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 锁具装箱问题**:通过图论和组合数学的结合,可以有效地解决...
- "2013-A.doc"和"java试卷(06-07)-dahogn.doc"分别代表2013年A组试卷和2006至2007年的试卷,提供了更多历史参考。 - "2019高程第五页.doc"到"2019高程第四页.doc"可能是一份完整的2019年高级程序设计课程的试卷,...
如果转移指令地址为2000H,位移量为06H,PC自动加1,那么目标地址为2001H + 06H = 2007H。 7. **RISC(精简指令集计算机)特点**: RISC的特点包括:简单指令集、大多数指令在一个时钟周期内完成、更多的通用...
这些题目均来自于2010年各地高考数学文科试卷,主要涉及的是导数与函数相关的知识点,包括利用导数求函数的单调区间、极值、切线方程、最值问题以及函数的性质等。以下是这些知识点的详细解析: 1. **导数的运算**...