部分和问题
深搜解题。
/* 问题描述: 部分和问题 给定整数a1,a2....an,判断是否可以从中选出若干数,使它们的和恰好为k。 0<n<21 输入: 4 13 1 2 4 7 输出: YES */ #include<iostream> #define MAX 1000 using namespace std; int a[MAX],n,k; bool dfs(int i, int sum) { if(i == n) return sum == k; if(dfs(i +1, sum)) return true; if(dfs(i+1, sum+a[i])) return true; return false; } int main() { int i; cin>>n>>k; for(i=0;i<n;i++) cin>>a[i]; bool ans = dfs(0, 0); if(ans) cout<<"YES"; else cout<<"NO"; cout<<endl; return 0; }
世上无难事,只要肯登攀。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步