1002. Anti-prime Sequences
来源:互联网 发布:java log4j 编辑:程序博客网 时间:2024/05/16 09:12
/*
* =====================================================================================
*
* Filename: 1002.cpp
*
* Description:
*
* Version: 1.0
* Created: 2012年09月11日 11时00分38秒
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Company:
*
* =====================================================================================
*/
#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
int prime[10001];
int stack[1001];
int visited[1001];
int b;
int e;
int d;
bool isComplete;
//judge whether
bool isValid(int v,int deep)
{
int sum = v;
for( int i= deep-1; i>=0 && i >= deep-d+1 ; i-- )
{
sum += stack[i];
if( prime[sum] == 0 )
{
return false;
}
}
return true;
}
void dfs(int deep)
{
if( isComplete == false )
{
if( deep >= e-b+1 )
{
isComplete = true;
//printf the result
printf("%d",stack[0]);
for( int i = 1; i <= e-b ; i++ )
{
printf(",%d",stack[i]);
}
printf("\n");
}
else
{
for( int i = b; i <= e ; i++ )
{
if( visited[i] == 0 && isValid(i,deep))
{
//push into the stack
stack[deep] = i;
//set visited
visited[i] = 1;
dfs(deep+1);
//unset visited
visited[i] = 0;
}
}
}
}
}
int main(int argc, char *argv[])
{
//set the flag into zero
//find the prime arange from 1 to 10000
memset(prime,0,sizeof(int));
for( int i = 2; i <= 100 ; i++ )
{
for( int j = 2; i*j <= 10000 ; j++ )
{
prime[i*j] = 1;
}
}
while( scanf("%d%d%d",&b,&e,&d) &&(b+e+d)!=0)
{
memset(visited,0,sizeof(int));
isComplete = false;
dfs(0);
if( isComplete == false )
{
printf("No anti-prime sequence exists.\n");
}
}
return 0;
}
* =====================================================================================
*
* Filename: 1002.cpp
*
* Description:
*
* Version: 1.0
* Created: 2012年09月11日 11时00分38秒
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Company:
*
* =====================================================================================
*/
#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
int prime[10001];
int stack[1001];
int visited[1001];
int b;
int e;
int d;
bool isComplete;
//judge whether
bool isValid(int v,int deep)
{
int sum = v;
for( int i= deep-1; i>=0 && i >= deep-d+1 ; i-- )
{
sum += stack[i];
if( prime[sum] == 0 )
{
return false;
}
}
return true;
}
void dfs(int deep)
{
if( isComplete == false )
{
if( deep >= e-b+1 )
{
isComplete = true;
//printf the result
printf("%d",stack[0]);
for( int i = 1; i <= e-b ; i++ )
{
printf(",%d",stack[i]);
}
printf("\n");
}
else
{
for( int i = b; i <= e ; i++ )
{
if( visited[i] == 0 && isValid(i,deep))
{
//push into the stack
stack[deep] = i;
//set visited
visited[i] = 1;
dfs(deep+1);
//unset visited
visited[i] = 0;
}
}
}
}
}
int main(int argc, char *argv[])
{
//set the flag into zero
//find the prime arange from 1 to 10000
memset(prime,0,sizeof(int));
for( int i = 2; i <= 100 ; i++ )
{
for( int j = 2; i*j <= 10000 ; j++ )
{
prime[i*j] = 1;
}
}
while( scanf("%d%d%d",&b,&e,&d) &&(b+e+d)!=0)
{
memset(visited,0,sizeof(int));
isComplete = false;
dfs(0);
if( isComplete == false )
{
printf("No anti-prime sequence exists.\n");
}
}
return 0;
}
- 1002. Anti-prime Sequences
- 1002. Anti-prime Sequences
- 1002. Anti-prime Sequences
- 1002. Anti-prime Sequences
- 1002. Anti-prime Sequences
- 1002.Anti-prime Sequences
- 1002.Anti-prime Sequences
- [sicily]1002. Anti-prime Sequences
- [sicily online]1002. Anti-prime Sequences
- 1002: Anti-prime Sequences
- soj1002 Anti-prime Sequences
- pku 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- sicily 1002Anti-prime Sequences
- POJ-2034-Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- HDU 2426
- 有关内存管理的部分试题
- linux shell 中"2>&1"含义
- 普洱茶的仓储流程
- java反射取对象中的各表量值
- 1002. Anti-prime Sequences
- Speex 一个开源的声学回声消除器(Acoustic Echo Cancellation)
- 关于类型对象作为形参和返回值时的一些问题
- android架构介绍
- 英语练习A busy Family
- Android开发--网络请求中GZip的使用(二)
- Hnust 1071 赫夫曼编码
- lucene学习笔记之构建索引
- python set 操作