1 solutions
- 
  1用集合去重,字符串存顺序进行递归 #include<bits/stdc++.h> using namespace std; int n,k; int a[25]={}; bool vst[25]={}; set<string> s; bool isprime(int x){ for(int i=2;i<=x/2;i++) if(x%i==0) return 0; return 1; } void dfs(int t,int sum,string sign){ if(t==k){ if(isprime(sum)) s.insert(sign); return; } for(int i=0;i<n;i++){ if(!vst[i]){ vst[i]=1; sign[i]='1'; dfs(t+1,sum+a[i],sign); sign[i]='0'; vst[i]=0; } } } int main(){ cin>>n>>k; for(int i=0;i<n;i++) cin>>a[i]; string x=""; for(int i=0;i<n;i++) x+='0'; dfs(0,0,x); cout<<s.size()<<"\n"; return 0; }
- 1
Information
- ID
- 299
- Time
- 1500ms
- Memory
- 128MiB
- Difficulty
- 7
- Tags
- # Submissions
- 22
- Accepted
- 7
- Uploaded By
 
       C23pengweixuan
      
                      LV 5
                    
 @ 2024-12-21 16:32:48
    
          C23pengweixuan
      
                      LV 5
                    
 @ 2024-12-21 16:32:48