UVa-524 - Prime Ring Problem

好久没有刷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("\n");

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("\n");

42         printf("Case %d:\n",cnt);

43         bool used[20]={};

44         a[1]=1;

45         used[1]=1;

46         fuc(1,used);

47     }

48 }

 

你可能感兴趣的:(Prim)