买书

来源:互联网 发布:nodejs express 数据库 编辑:程序博客网 时间:2024/05/01 12:04

蒜头君去书店买书,他有 mm 元钱,书店里面有 nn 本书,每本书的价格为 p_ipi 元。蒜头君很爱学习,想把身上钱都用来买书,并且刚好买 kk 本书。请帮蒜头君计算他是否能刚好用 mm 元买 kk 本书。

输入格式

第一行输入 33 个整数 m(1 \le m \le 100000000)m(1m100000000)n(1 \le n \le 30)n(1n30)k(1 \le k \le min(8, n))k(1kmin(8,n))

接下来一行输入 nn 个整数,表示每本书的价格 p_i(1 \le p_i \le 100000000)pi(1pi100000000)

输出格式

如果蒜头君能 刚好 用 mm 元买 kk 本书,输入一行"Yes", 否则输出"No"

样例输入1

10 4 41 2 3 4

样例输出1

Yes

样例输入2

10 4 31 2 3 4

样例输出2

No
import java.util.Scanner;public class Main {static int k,m,n,flag=0;static int p[] = new int[32];static long sum = 0;static void dfs(int num,long sum,int i){if(num>k || i>n+1 || sum>m)return;if(num==k){if(sum==m){flag=1;return;}}// 0 sum 1 --1 p[1] 2--2 --4 p1+p2+p3+p4 5--else{dfs(num+1,sum+p[i],i+1);dfs(num,sum,i+1);}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);m = sc.nextInt();n = sc.nextInt();k = sc.nextInt();for(int i=1;i<=n;i++)p[i]=sc.nextInt();dfs(0,sum,1);if(flag==1)System.out.println("Yes");elseSystem.out.println("No");}}





0 0
原创粉丝点击