UVa-524

好久没有刷UVa了,没想到居然一次AC,代码几乎与rujia没有什么太大的区别

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int a[20],n,cnt;
 6 bool isprime(int m)
 7 {
 8     for(int i=2;i<m;i++)
 9         if(m%i==0) return 0;
10     return 1;
11 }
12 void fuc(int cur,bool used[20])
13 {
14     if(cur==n)
15     {
16         printf("%d",a[1]);
17         for(int i=2;i<=n;i++)
18             printf(" %d",a[i]);
19         printf("
");
20         return;
21     }
22     for(int i=2;i<=n;i++)
23     {
24         if(!used[i]&&isprime(a[cur]+i))
25         {
26             if((cur==n-1&&isprime(1+i))||cur<n-1)
27             {
28                 a[cur+1]=i;
29                 used[i]=1;
30                 fuc(cur+1,used);
31                 used[i]=0;
32             }
33         }
34     }
35 }
36 int main()
37 {
38     while(~scanf("%d",&n))
39     {
40         memset(a,0,sizeof(a));
41         if(++cnt>1) printf("
");
42         printf("Case %d:
",cnt);
43         bool used[20]={};
44         a[1]=1;
45         used[1]=1;
46         fuc(1,used);
47     }
48 }
原文地址:https://www.cnblogs.com/windrises/p/4653041.html