荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 面试遇到的问题
发信站: 荔园晨风BBS站 (2005年04月13日11:55:11 星期三), 站内信件
#include <iostream.h>
#include <string.h>
#include <fstream.h>
int list[30],prime[100],flag[30],n;
void sieve()
{
int i,j;
memset(prime,0,sizeof(prime));
prime[0] = prime[1] = 1;
for (i = 2 ; i < 50 ; i ++){
if (prime[i] == 0){
for (j = 2*i ; j < 100 ;j += i)
prime[j] = 1;
}
}
}
void print()
{
int i;
for (i = 1; i <= n; i ++)
{
if (i != n)
cout << list[i] << " ";
else
cout << list[i] << endl;
}
}
void dfs(int now)
{
int i;
if (now == n)
{
for (i = 2; i <= n;i ++)
{
if (flag[i] == 0)
{
if (prime[i+list[now-1]] == 0 && prime[i+1] == 0)
{
list[now] = i;
print();
}
}
}
}
else
{
for (i = 2; i <= n;i ++)
{
if (flag[i] == 0 && prime[i+list[now-1]] == 0)
{
list[now] = i;
flag[i] = 1;
dfs(now+1);
flag[i] = 0;
}
}
}
}
int main()
{
int count = 0;;
sieve();
while (cin >> n){
if (count > 0)
cout << endl;
count ++;
cout << "Case " << count << ":" << endl;
list[1] = 1;
memset(flag,0,sizeof(flag));
flag[1] = 1;
if (n % 2 == 0){
dfs(2);
}
}
return 0;
}
【 在 ember (灰烬) 的大作中提到: 】
1,2,3,4,。。。。。20
这20个数字,按某种顺序排列起来,让相邻以及首尾的两个数字加起来都是素数
编程求出并打印所有的排列
--
很想注册一个马甲。。。
--
全国BBS都关了,我们去睡觉了
我是个大猪头
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.149]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店