经典搜索-nefuoj1205-和为k

来源:互联网 发布:mmd动作数据导入maya 编辑:程序博客网 时间:2024/05/01 16:04

dfs的经典题。。
能否在数列中取这么多数,让他们的和为k
我写的一直t。因为开始我是用for来枚举下一项,这样如果判断成功还好,否则,在下一个枚举2的情况下就要 多计算好多好多状态,
所以tle了
还是需要多加练习。。
后悔自己去年没有好好练习,但是后悔已经没用了,加油吧,相信自己。

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=50;bool vis[maxn];int a[maxn];int k,m;bool flag=0;bool dfs(int s,int all){  if(all>k) return false;    if(s==m+1) return all==k;    if(dfs(s+1,all)) return true;    if(dfs(s+1,all+a[s])) return true;    return false;}int main(){    while(scanf("%d%d",&m,&k))    {for(int i=1;i<=m;i++)        scanf("%d",&a[i]);        flag=false;           if(dfs(1,0))            {  cout<<"Yes"<<endl;               break;            }    cout<<"No"<<endl;    }    return 0;}
0 0
原创粉丝点击