搜索的入门,学会思想吧!
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,s[10009],i,sum,ssum;
bool dfs(int pos,int sum)
{
if(sum==ssum)
return 1;
if(pos==n||(ssum>0&&s[pos]>ssum)||(sum>0&&sum>ssum))
return 0;
if(dfs(pos+1,sum+s[pos]))//判断是从第几位开始计算
return 1;
else
return dfs(pos+1,sum);
return 0;
}
int main()
{
while(scanf("%d",&n)==1)
{
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
scanf("%d",&ssum);
sort(s,s+n);
if(dfs(0,0))
printf("Of course,I can!\n");
else
printf("Sorry,I can't!\n");
}
return 0;
}
本文介绍了一个简单的搜索问题解决方法,通过使用C++实现深度优先搜索(DFS),来判断一组整数是否能通过加减运算达到目标和。文章提供了一个完整的代码示例,包括输入整数数组、设定目标和、对数组进行排序以及实现DFS递归算法。
965

被折叠的 条评论
为什么被折叠?



