有个问题想不明白,求dalao赐教!!
查看原帖
有个问题想不明白,求dalao赐教!!
473413
kkksc0100楼主2021/2/25 14:58

这是我的AC代码


	#include <iostream>

  	#include <cstdio>
	#include <cmath>
	using namespace std;
	int n,k,a[25],total,num;
	bool book[25];
	bool isPrime(int x){
    	if(x <= 1){
       	    return 0;
    	}
    	for(int i = 2;i <= sqrt(x);i++){
        	if(x%i == 0){
            	return 0;
        	}
    	}
    	return 1;
	}
	void dfs(int step){
    	if(step == 0){
        	if(isPrime(num)){
            	total++;
        	}
        	return ;
    }
    for(int i = 1;i <= n;i++){
        	if(!book[i]){
            	book[i] = 1;
            	num += a[i];
            	dfs(step-1);
          		book[i] = 0;
            	num -= a[i];
        	}else{
            	return ;
        	}
        }
	}
	int main(){
    	cin>>n>>k;
    	for(int i = 1;i <= n;i++){
        	cin>>a[i];
    	}
    	dfs(k);
    	cout<<total;
    	return 0;
	}

但是如果不加那个else{return ; }的话就会出错,但是,因为这里是函数结尾,做完了会自动return,为什么要加个else{return ; }呢?

2021/2/25 14:58
加载中...