把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数
来源:互联网 发布:js下拉框选中触发事件 编辑:程序博客网 时间:2024/05/16 19:10
把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
分析:用回溯算法,考察所有可能的排列。
用4个数字做个测试:
#include <stdio.h>#include<iostream>#include <math.h>void search(int);void init(); //初始化void printresult(); //打印结果int isprime(int); //判断该数是否是素数void swap(int,int); //交换a[m]和a[i]int a[5]; //a数组存放素数环using namespace std ;int main(){init();search(2); //递归搜索}int isprime(int num)//判断是否为素数{int i,k;k=sqrt((double) num);for(i=2;i<=k;i++)if(num%i==0)return 0; return 1;}void printresult()//输出结果{int i;for(i=1;i<=4;i++)// printf("%3d",a[i]);cout<<" "<<a[i];cout<<endl;}void search(int m)// ----------------------------核心{int i;if(m>4) //当已经搜索到叶结点时{if(isprime(a[1]+a[4])) //如果a[0]+a[4]也是素数printresult(); //输出当前解return;}else{for(i=m;i<=4;i++) //(排列树){swap(m,i); //交换a[m]和a[i]if(isprime(a[m-1]+a[m])) //判断a[m-1]+a[m]是否是素数search(m+1); //递归搜索下一个位置swap(m,i); //把a[m]和a[i]换回来}}}void swap(int m, int i)//交换{int t;t=a[m];a[m]=a[i];a[i]=t;}void init(){int i;for(i=0;i<5;i++)a[i]=i;}
- 把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数
- 将1、2、...、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。
- 从1到20个数字排成一圈,每两个相邻数字之和为一个素数
- 抽屉原理---从1到20这20个数中,任取11个数,必有两个数,其中一个数是另一个数的倍数
- 找与一个数二进制表示1的个数相同的相邻的两个数
- 找出MXN数组中所有不相邻元素,并求出它们的和(相邻的数:前一个数是偶数,后一个数是素数)
- 如果给定一个数组arr[0,...N-1],要求找出相邻两个数的最大差值
- c语言 把一个数分解成两个素数的和,判断素数精简算法,scanf("%c")读入的是回车符‘\n’
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 判断一个数是否为素数&求1到某一个数之间的所有素数
- 给出101个整数数,这101个数是1~100中的数,其中只有一个是出现两次的数,要求找出这个数。
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
- 一个偶数总能表示为两个素数之和。要求:输入一个偶数,将其表示成两个素数之和,直到输入的数为0。
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。
- 输出从1到N个数,如果是某两个数的倍数则变化
- 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,
- Repeater的分页
- uva401--字符串
- 要什么?我帮你写代码的时候也想知道你到底想要什么
- ADB无线调试
- 开启远程桌面编程方法-wmic
- 把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数
- 启动页面设置
- 关于sharepoint2007的服务器场查看、批量修改应用程序池的帐号以及备用访问映射问题
- C语言输出百分号(%)的方法,比较迷惑
- initWithFrame: 和 initWithCoder: 区别
- 数据库默认保存方式(byte/char)
- 使用snmp协议发现数据连路层拓扑
- Linux下Web压力测试工具 --- Siege
- 节选—男人爱撒谎女人爱哭(这段挺靠谱,把人从动物角度考虑一切就对多了)