#1114为什么编译器输出正确但是oj错误

gader8 edited 1 年,4 月前

编译器还有其他平台oj在样例8时输出正确答案,但是eoj的输出只有1,求解答

#include<bits/stdc++.h>
using namespace std;
const int N= 20;
int n,st[40],primes[40];
int sst[N],a[N],cnt;

void dfs(int x)
{
    if(x==n+1&&!st[a[n]+a[1]]) {for(int i=1;i<=n;i++)
         cout<<a[i]<<' ';
         cout<<endl;
         }
    
    for(int i=2;i<=n;i++)
     {
         if(!sst[i]&&!st[a[x-1]+i])
         {
             a[x] = i;
             sst[i]=1;
             dfs(x+1);
             sst[i] = 0;
         }
     }
     return ;
}



int main()
{
    cin>>n;
    for(int i = 2;i<=40;i++)
    {
        if(!st[i]) primes[cnt++] = i;
        for(int j=0;primes[j]<=40/i;j++)
         {
             st[primes[j]*i] = 1;
             if(i%primes[j]==0) break;
         }
    }
    a[1]=1;
    sst[1]=1;
    dfs(2);
    return 0;
}

Comments