您的位置:首页 > Web前端 > JavaScript

[DFS]FJSDFZOJ 1079/NOIP2002 选数

2014-02-07 21:55 288 查看
原题:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1079

 

时间:2014.2.7

 

类型:回溯,dfs

 

源码:

#include<iostream>
#include<cmath>
using namespace std;
int a[21],n,k,x[21],cnt=0;
bool used[21]={false};

bool pd(int s)
{
for(int i=2;i<=sqrt(s);i++)  {  if(s%i==0) { return false; }  }
return true;
}

void search(int s,int sum,int l)
{
if(s==k+1)
{
if(pd(sum))  {  cnt++;  }
return;
}
for(int i=l;i<=n;i++)
{
if(used[i]) { continue; }
a[s]=x[i];
used[i]=true;
search(s+1,sum+a[s],i+1);
a[s]=0;
used[i]=false;
}
}

int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>x[i];
}
search(1,0,1);
cout<<cnt;
//system("pause");
return 0;
}


 

最后状态:AC

 

总结:一开始没考虑重复..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dfs 回溯