The partial sum problem
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
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!
-
There are multiple test cases.
import java.util.Scanner;
public class Main {
static int number, sum;
static int arr[] = new int[25];
static int vis[] = new int[25];
public static boolean dfs(int step, int count) {
if (step == number) {
return count == sum;
}
vis[step] = 1;
if (dfs(step + 1, count + arr[step])) {
return true;
}
vis[step] = 0;
if (dfs(step + 1, count)) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
number = scanner.nextInt();
for (int i = 0; i < number; i++) {
arr[i] = scanner.nextInt();
}
sum = scanner.nextInt();
if (dfs(0, 0)) {
System.out.println("Of course,I can!");
} else {
System.out.println("Sorry,I can't!");
}
}
}
}