搜索的入门,学会思想吧!
#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;
}