題目資訊:
【問題描述】對於乙個給定正整數的集合s=和正整數c,程式設計計算s的乙個子集s1,使得子集s1的和等於c。
【輸入格式】
第一行有2個正整數n和c,第二行有n個正整數
【輸出格式】
一行資料,按輸入的順序輸出,若無解則輸出"no solution!"
【輸入樣例】
5 10
2 2 6 5 4
【輸出樣例】
2 2 6
【問題規模】
n<7000,c
#include#include#include#define n 10005
using namespace std;
int a[n],c,v[n],ans[n],n,flag;
void dfs(int temp)
flag=1;
return;
} else
dfs(temp+1);
if(flag==1) return;
v[i]=0;//回溯
c+=a[i];
} }}int main()
if(summemset(v,0,sizeof(v));
memset(ans,0,sizeof(ans));
flag=0;
dfs(0);
if(flag==0)
printf("no solution!\n");
}}
xynuoj 1277 子集和問題(dfs)
時間限制 1 sec 記憶體限制 128 mb 提交 30 解決 8 您該題的狀態 已完成 提交 狀態 討論版 問題描述 對於乙個給定正整數的集合s 和正整數c,程式設計計算s的乙個子集s1,使得子集s1的和等於c。輸入格式 第一行有2個正整數n和c,第二行有n個正整數 輸出格式 一行資料,按輸入的...
子集和問題 基於dfs的回溯思想
子集和問題 description 子集和問題的乙個例項為 s,t 其中,s 是乙個正整數的集合,c是乙個正整數。子集和問題判定是否存在s的乙個子集s1,使得 試設計乙個解子集和問題的回溯法。對於給定的正整數的集合s 和正整數c,計算s 的乙個子集s1,使得 input 輸入資料的第1 行有2 個正...
子集和問題
題目描述 子集和問題的乙個例項為 s,t 其中,s 是乙個正整數的集合,c是乙個正整數。子集和問題判定是否存在s的乙個子集s1,使得s1中的各元素之和等於c。題目出自 計算機演算法設計與分析 第3版 王曉東 思路 用回溯法解這道題,我本來想修改排列樹使之可以求出乙個集合的所有子集。但是分析了一下,時...