她不知道能不能达成目标。你能告诉她吗?
一个正整数,
如果小红能按要求完成染色,输出"Yes"。否则输出"No"。
1234567
Yes
将3、4、7染成红色即可,这样3+4+7=1+2+5+6
23
No
显然无论如何都不能完成染色。
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); long num = in.nextLong(); String[] numStrs = Long.toString(num).split(""); int[] nums = new int[numStrs.length]; int sum = 0; for (int i = 0; i < numStrs.length; i++) { nums[i] = Integer.parseInt(numStrs[i]); sum += nums[i]; } if (sum % 2 == 1) { System.out.println("No"); } else { int target = sum / 2; int[] dp = new int[target + 1]; dp[0] = 1; for (int n : nums) { int j = target ; while (j >= n) { dp[j] += dp[j - n]; j--; } } if (dp[target] != 0) { System.out.println("Yes"); } else { System.out.println("No"); } } } }