求各位大佬看看为什么会RE,我感到不可思议
#include <bits/stdc++.h>
using namespace std;
bool vis[10000];
long long a[10000];
long long q[10000];int len;
long long tmp;
bool isPrime(long long n)
{
if (n <= 1)
return false;
if (n <= 3)
return true;
if (n % 2 == 0 || n % 3 == 0)
return false;
for (long long i = 5; i * i < n; i += 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
return true;
}
void my_printf(){
for(register int i=0;i<len;++i){
printf("%lld ",q[i]);
}
printf("\n");
}
long long dfs(int weizhi){
for(int i=0;i<tmp;++i){//枚举数字
if(weizhi == tmp-1 && isPrime(q[len-1] + q[0])){
my_printf();
return 0;
}
if(!vis[i] && isPrime(a[i] + q[len-1])){
q[len++]=a[i];
vis[i]=true;
dfs(weizhi+1);
vis[i]=false;
q[len--]=0;
}
}
}
int main(){
for(long long i=0;cin>>tmp;++i){
memset(a,0,sizeof(a));
len=0;
printf("Case %lld:\n",i+1);
for(int i=0;i<tmp;++i){
a[i]=i+1;
}
q[len++]=1;
vis[0]=true;
dfs(0);
printf("\n");
}
return 0;
}