package org.acm.search;
/*http://acm.nyist.net/JudgeOnline/problem.php?pid=1058*/
//这题和NYOJ927差不多
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class Search_1058 {
private static long n, k, sum;
private static long data[] = new long[21];
private static String result;
public static void main(String[] args) {
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
while (sc.hasNext()) {
n = sc.nextLong();
k = sc.nextLong();
// 初始化
sum = 0;
result = "";
Arrays.fill(data, 0);
for (int i = 0; i < n; i++) {
data[i] = sc.nextLong();
sum += data[i];
}
if (sum < k)
System.out.println("NO");
else {
if (dfs(0, 0)) {
System.out.println("YES");
System.out.println(result.replaceFirst(" ", ""));
} else
System.out.println("NO");
}
}
sc.close();
}
// 深搜
private static boolean dfs(int p, long s) {
if (s == k)
return true;
if (p >= n)
return false;
if (dfs(p + 1, s + data[p])) {
result = " " + data[p] + result;
return true;
} else {
return dfs(p + 1, s);
}
}
}
NYOJ-1058(搜索)-题目----------------------------- 部分和问题
最新推荐文章于 2022-03-01 11:32:29 发布