1020
2016-04-21 22:34
239 查看
简单题意:求关于素数环的题
解题思路:使用的是深度优先搜索方法
按照从小到大的搜索顺序搜索后的结果就是符合输出顺序的。
由于是20以内的数字,所以判断质数的方法是直接打表后一个简单的循环判断一下是否为质数
程序中mark数组是为了标记某个数字是否使用过了,num数组存储的是数字链表的存储顺序。
感想:深度优先里面比较简单的题
AC代码:
#include<stdio.h>
#include<math.h>
int a[25];
bool use[25];
int n;
bool isprime(int num){
int i;
for(i=2;i<=sqrt(num+0.0);i++){
if(num%i==0)
return false;
}
return true;
}
void DFS(int num){ int i;
if(n==num&&isprime(1+a[n-1])){ for(i=0;i<n;i++){
printf(i==n-1?"%d\n":"%d ",a[i]);
}
}
else{
for(i=2;i<=n;i++){
if(!use[i]&&isprime(i+a[num-1])){
a[num]=i;
use[i]=true; DFS(num+1);
use[i]=false;
}
}
}
}
void init(){
int i;
for(i=0;i<n;i++){
use[i]=false;
}
a[0]=1;
}
int main(){
int t=0;
while(scanf("%d",&n)!=EOF){
init();
printf("Case %d:\n",++t);
DFS(1);
puts("");
}
}
解题思路:使用的是深度优先搜索方法
按照从小到大的搜索顺序搜索后的结果就是符合输出顺序的。
由于是20以内的数字,所以判断质数的方法是直接打表后一个简单的循环判断一下是否为质数
程序中mark数组是为了标记某个数字是否使用过了,num数组存储的是数字链表的存储顺序。
感想:深度优先里面比较简单的题
AC代码:
#include<stdio.h>
#include<math.h>
int a[25];
bool use[25];
int n;
bool isprime(int num){
int i;
for(i=2;i<=sqrt(num+0.0);i++){
if(num%i==0)
return false;
}
return true;
}
void DFS(int num){ int i;
if(n==num&&isprime(1+a[n-1])){ for(i=0;i<n;i++){
printf(i==n-1?"%d\n":"%d ",a[i]);
}
}
else{
for(i=2;i<=n;i++){
if(!use[i]&&isprime(i+a[num-1])){
a[num]=i;
use[i]=true; DFS(num+1);
use[i]=false;
}
}
}
}
void init(){
int i;
for(i=0;i<n;i++){
use[i]=false;
}
a[0]=1;
}
int main(){
int t=0;
while(scanf("%d",&n)!=EOF){
init();
printf("Case %d:\n",++t);
DFS(1);
puts("");
}
}
相关文章推荐
- 测试作业
- 实验6 在应用程序中播放音频和视频
- 137. Single Number II
- CSS样式三--盒子模型
- 快速排序的实现
- PHP中的验证码类(完善验证码)
- Handler与ProgressBar 例子
- Codeforces Educational Round 12 655ABCDE
- 堆
- 数据结构之物流信息的归并排序(非递归实现)
- [疯狂Java]I/O:字节流、字符流
- UML类图
- windows 10 64bit专业版安装Djano 1.9开发环境
- 【SQLite】Unity和SQLite数据库的应用
- HTTP请求响应过程以及与HTTPS区别
- Android属性动画实现TextView类似支付宝余额数字滚动
- LP距离与余弦距离物理意义
- Linux网络相关查询脚本
- 自定义String类:构造函数、复制构造函数、赋值函数的实现
- Python语言集成开发环境搭建