算法:搜索
描述 One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choose some integers from the N integers and the sum of them is equal to K.
输入There are multiple test cases. Each test case contains three lines.The first line is an integer N(1≤N≤20),represents the array contains N integers. The second line contains N integers,the ith integer represents A[i](-10^8≤A[i]≤10^8).The third line contains an integer K(-10^8≤K≤10^8).输出If Tom can choose some integers from the array and their them is K,printf ”Of course,I can!”; other printf ”Sorry,I can’t!”.样例输入4 1 2 4 7 13 4 1 2 4 7 15 样例输出Of course,I can!
Sorry,I can't!代码:
#include#include #include #include #include using namespace std; int n,m,a[25],flag; int dfs(int i,int sum) { if(i==n) return sum==m; if(dfs(i+1,sum)) return 1; if(dfs(i+1,sum+a[i])) return 1; return 0; } int main() { int i,j,k; while(cin>>n) { for(i=0;i >a[i]; cin>>m; if(dfs(0,0)) cout<<"Of course,I can!"<