为什么会RE?
查看原帖
为什么会RE?
255762
lyxleo楼主2020/6/6 17:05

求各位大佬看看为什么会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;
}
2020/6/6 17:05
加载中...